Refactor
:my
=>
'code'
Codes
Refactorings
Popular
Best
Submit
Spam
Account
Logout
Login
JavaScript doesn't seem to be activated, expect things to be ugly and sloppy!
Learn How to Create Your Own Programming Language
createyourproglang.com
Recent
Ultra lightweight message "popup" at top of parent element
Good way to output menu with submenu through a module?!
Moving Code from Controller to Model
Get Site Information with PHP
Help with module?!
Node.js: Calculating total filesize of 3 files
convert single itemed sub-arrays into string
Access HashMap key by value
Language Selection
Generating a list of 3 entries with the rest hidden
Popular
Good way to output menu with submenu through a module?!
Ultra lightweight message "popup" at top of parent element
Moving Code from Controller to Model
Double 'if'
Language Selection
Help with module?!
Fetch and parse feeds with feedzirra
Generating a list of 3 entries with the rest hidden
Access HashMap key by value
Node.js: Calculating total filesize of 3 files
Pastable version of
Rails migration conflict repair
<div style="overflow:auto;border:solid 1px #ccc;background:#000;color:#F8F8F8"> <div class="section"> <pre style="float:left;margin:0 10px;border-right:0;color:#666;">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36</pre> <pre class="sunburst">namespace <span style="color:#3387CC;"><span style="color:#3387CC;">:</span>migrations</span> <span style="color:#E28964;">do</span> desc <span style="color:#65B042;"><span style="color:#65B042;">'</span>reverts, renames and re-executes uncommitted migrations that conflict with already committed migrations<span style="color:#65B042;">'</span></span> task <span style="color:#3387CC;"><span style="color:#3387CC;">:</span>repair</span> => <span style="color:#3387CC;"><span style="color:#3387CC;">:</span>environment</span> <span style="color:#E28964;">do</span> uncommitted <span style="color:#E28964;">=</span> <span style="color:#65B042;"><span style="color:#65B042;">`</span>svn status<span style="color:#65B042;">`</span></span>.<span style="color:#89BDFF;">select</span> {|<span style="color:#3E87E3;">line</span>| line <span style="color:#E28964;">=~</span> <span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span><span style="color:#E9C062;">db<span style="color:#CF7D34;">\/</span>migrate<span style="color:#CF7D34;">\/</span></span><span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span>}.<span style="color:#89BDFF;">collect</span> {|<span style="color:#3E87E3;">line</span>| line.<span style="color:#89BDFF;">match</span>(<span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span><span style="color:#E9C062;"> db<span style="color:#CF7D34;">\/</span>migrate<span style="color:#CF7D34;">\/</span><span style="color:#E9C062;"><span style="color:#E9C062;">(</span>.*rb<span style="color:#E9C062;">)</span></span></span><span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span>)[<span style="color:#3387CC;">1</span>]} committed <span style="color:#E28964;">=</span> <span style="color:#9B859D;">Dir</span>.<span style="color:#89BDFF;">glob</span>(<span style="color:#65B042;"><span style="color:#65B042;">'</span>db/migrate/*<span style="color:#65B042;">'</span></span>).<span style="color:#89BDFF;">collect</span> {|<span style="color:#3E87E3;">line</span>| line.<span style="color:#89BDFF;">match</span>(<span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span><span style="color:#E9C062;">db<span style="color:#CF7D34;">\/</span>migrate<span style="color:#CF7D34;">\/</span><span style="color:#E9C062;"><span style="color:#E9C062;">(</span>.*rb<span style="color:#E9C062;">)</span></span></span><span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span>)[<span style="color:#3387CC;">1</span>]} <span style="color:#E28964;">-</span> uncommitted highest_committed <span style="color:#E28964;">=</span> committed.<span style="color:#89BDFF;">collect</span>(<span style="color:#E28964;">&</span><span style="color:#3387CC;"><span style="color:#3387CC;">:</span>to_i</span>).<span style="color:#89BDFF;">max</span> lowest_uncommitted <span style="color:#E28964;">=</span> uncommitted.<span style="color:#89BDFF;">collect</span>(<span style="color:#E28964;">&</span><span style="color:#3387CC;"><span style="color:#3387CC;">:</span>to_i</span>).<span style="color:#89BDFF;">min</span> schema_version <span style="color:#E28964;">=</span> <span style="color:#9B859D;">ActiveRecord</span>::<span style="color:#89BDFF;">Base</span>.<span style="color:#89BDFF;">connection</span>.<span style="color:#89BDFF;">select_one</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>select version from schema_info<span style="color:#65B042;">"</span></span>)[<span style="color:#65B042;"><span style="color:#65B042;">"</span>version<span style="color:#65B042;">"</span></span>].<span style="color:#89BDFF;">to_i</span> <span style="color:#AEAEAE;font-style:italic;"> <span style="color:#AEAEAE;font-style:italic;">#</span> revert uncommitted migrations</span> uncommitted.<span style="color:#89BDFF;">sort_by</span>(<span style="color:#E28964;">&</span><span style="color:#3387CC;"><span style="color:#3387CC;">:</span>to_i</span>).<span style="color:#89BDFF;">reverse</span>.<span style="color:#89BDFF;">each</span> <span style="color:#E28964;">do </span>|<span style="color:#3E87E3;">migration</span>| version <span style="color:#E28964;">=</span> migration.<span style="color:#89BDFF;">to_i</span> <span style="color:#E28964;">if</span> version <span style="color:#E28964;"><=</span> schema_version name <span style="color:#E28964;">=</span> migration.<span style="color:#89BDFF;">match</span>(<span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span><span style="color:#E9C062;"><span style="color:#E9C062;"><span style="color:#E9C062;">(</span><span style="color:#CF7D34;">\d</span>*_.*<span style="color:#E9C062;">)</span></span>.rb</span><span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span>)[<span style="color:#3387CC;">1</span>] class_name <span style="color:#E28964;">=</span> (<span style="color:#E28964;">require</span> <span style="color:#65B042;"><span style="color:#65B042;">'</span>db/migrate/<span style="color:#65B042;">'</span></span> <span style="color:#E28964;">+</span> name)[<span style="color:#3387CC;">0</span>] puts class_name.<span style="color:#89BDFF;">constantize</span>.<span style="color:#89BDFF;">down</span> <span style="color:#E28964;">end</span> <span style="color:#E28964;">end</span> <span style="color:#AEAEAE;font-style:italic;"> <span style="color:#AEAEAE;font-style:italic;">#</span>set it back to the version prior to all the uncommitted migrations - this doesn't get done automatically by calling down</span> <span style="color:#9B859D;">ActiveRecord</span>::<span style="color:#89BDFF;">Base</span>.<span style="color:#89BDFF;">connection</span>.<span style="color:#89BDFF;">execute</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>update schema_info set version=<span style="color:#DAEFA3;"><span style="color:#DAEFA3;">#{</span>schema_version<span style="color:#E28964;">-</span><span style="color:#DDF2A4;">1</span><span style="color:#DAEFA3;">}</span></span><span style="color:#65B042;">"</span></span>) version_offset <span style="color:#E28964;">=</span> (highest_committed <span style="color:#E28964;">-</span> lowest_uncommitted) <span style="color:#E28964;">+</span> <span style="color:#3387CC;">1</span> uncommitted.<span style="color:#89BDFF;">each</span> <span style="color:#E28964;">do </span>|<span style="color:#3E87E3;">old_name</span>| version <span style="color:#E28964;">=</span> old_name.<span style="color:#89BDFF;">to_i</span> <span style="color:#E28964;">+</span> version_offset new_name <span style="color:#E28964;">=</span> version.<span style="color:#89BDFF;">to_s</span>.<span style="color:#89BDFF;">rjust</span>(<span style="color:#3387CC;">3</span>,<span style="color:#65B042;"><span style="color:#65B042;">'</span>0<span style="color:#65B042;">'</span></span>) <span style="color:#E28964;">+</span> old_name.<span style="color:#89BDFF;">gsub</span>(<span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span><span style="color:#E9C062;"><span style="color:#CF7D34;">\d</span></span><span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span>, <span style="color:#65B042;"><span style="color:#65B042;">'</span><span style="color:#65B042;">'</span></span>) <span style="color:#65B042;"><span style="color:#65B042;">`</span>mv db/migrate/<span style="color:#65B042;"><span style="color:#65B042;">#{</span>old_name<span style="color:#65B042;">}</span></span> db/migrate/<span style="color:#65B042;"><span style="color:#65B042;">#{</span>new_name<span style="color:#65B042;">}</span></span><span style="color:#65B042;">`</span></span> <span style="color:#E28964;">end</span> puts <span style="color:#65B042;"><span style="color:#65B042;">"</span>Uncommited migrations have been reversed and renamed. You can now migrate.<span style="color:#65B042;">"</span></span> <span style="color:#E28964;">end</span> <span style="color:#E28964;">end</span> </pre> </div> </div> <a href="http://refactormycode.com/codes/112-rails-migration-conflict-repair" style="color:#fff" title="As seen on RefactorMyCode.com"><img alt="Small_logo" src="http://refactormycode.com/images/small_logo.gif" style="border:0" /></a>