wize_upgrader 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/wize_upgrader.rb +62 -16
- metadata +1 -1
data/lib/wize_upgrader.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require 'active_support/inflector'
|
3
|
+
require 'debugger'
|
3
4
|
|
4
5
|
module Wize
|
5
6
|
class Upgrader
|
@@ -8,6 +9,8 @@ module Wize
|
|
8
9
|
"app" => "app",
|
9
10
|
"script" => "bin",
|
10
11
|
"db" => "db",
|
12
|
+
"lib" => "lib",
|
13
|
+
"spec" => "spec",
|
11
14
|
"vendor" => "vendor"
|
12
15
|
}
|
13
16
|
HARD_DIR_MAPPINGS = {
|
@@ -18,6 +21,7 @@ module Wize
|
|
18
21
|
"gem 'jquery-rails'",
|
19
22
|
"gem 'pg'",
|
20
23
|
"gem 'sqlite3'",
|
24
|
+
"gem 'rspec-rails'",
|
21
25
|
"gem 'rails', '3.2.10'",
|
22
26
|
"gem 'rails', '3.2.11'",
|
23
27
|
"gem 'rails', '3.2.12'",
|
@@ -28,7 +32,8 @@ module Wize
|
|
28
32
|
COMMON_FILES = [
|
29
33
|
"config/application.yml",
|
30
34
|
"config/database.yml",
|
31
|
-
"config/routes.rb"
|
35
|
+
"config/routes.rb",
|
36
|
+
"README.md"
|
32
37
|
]
|
33
38
|
|
34
39
|
def initialize(old_app_name)
|
@@ -42,17 +47,28 @@ module Wize
|
|
42
47
|
begin
|
43
48
|
rename_old
|
44
49
|
rails_gen_new
|
50
|
+
upgrade_gemfile("#{ @old_name }/Gemfile", "#{ @new_name }/Gemfile")
|
51
|
+
install_rspec
|
45
52
|
copy_common_dirs
|
46
53
|
copy_special_files
|
47
|
-
|
54
|
+
fix_models
|
55
|
+
fix_controllers
|
48
56
|
rescue => e
|
49
57
|
puts e.message
|
58
|
+
puts e.backtrace
|
50
59
|
puts "something went wrong!"
|
51
60
|
ensure
|
52
61
|
end
|
53
62
|
puts "------ DONE UPGRADING! HAVE FUN ------"
|
54
63
|
end
|
55
64
|
|
65
|
+
def install_rspec
|
66
|
+
`cd #{ @new_name }`
|
67
|
+
`bundle install`
|
68
|
+
`rails g rspec:install`
|
69
|
+
`cd ..`
|
70
|
+
end
|
71
|
+
|
56
72
|
def attr_accessibles
|
57
73
|
@attr_accessibles ||= Hash.new { [] }
|
58
74
|
end
|
@@ -62,6 +78,7 @@ module Wize
|
|
62
78
|
end
|
63
79
|
|
64
80
|
def fix_controller(file)
|
81
|
+
puts "fixing #{ file }"
|
65
82
|
model = File.basename(file).gsub("_controller.rb", "").singularize
|
66
83
|
return if attr_accessibles[model].empty?
|
67
84
|
|
@@ -93,11 +110,12 @@ module Wize
|
|
93
110
|
end
|
94
111
|
|
95
112
|
def fix_model(file)
|
113
|
+
lower_model = file.gsub(".rb", "")
|
114
|
+
puts "fixing #{ lower_model }"
|
96
115
|
File.open("#{ @new_name }/app/models/#{ file }", "r") do |old|
|
97
116
|
File.open("#{ @new_name }/app/models/#{ file }.tmp", "w") do |n|
|
98
117
|
old.each_line do |line|
|
99
118
|
if line.strip.start_with?("attr_accessible")
|
100
|
-
lower_model = file.gsub(".rb", "")
|
101
119
|
attr_accessibles[lower_model] += line
|
102
120
|
.strip
|
103
121
|
.gsub("attr_accessible", "")
|
@@ -109,21 +127,23 @@ module Wize
|
|
109
127
|
end
|
110
128
|
end
|
111
129
|
end
|
130
|
+
puts "Found attr_accessible #{ attr_accessibles[lower_model].join(", ") }"
|
112
131
|
`mv #{ @new_name }/app/models/#{ file }.tmp #{ @new_name }/app/models/#{ file }`
|
113
132
|
end
|
114
133
|
|
115
134
|
def files_for(dir)
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
135
|
+
puts "Files for: #{ dir }"
|
136
|
+
files = []
|
137
|
+
Dir.foreach(dir) do |node|
|
138
|
+
next if node.start_with?(".")
|
139
|
+
files << node if node.end_with?(".rb")
|
140
|
+
if File.directory?("#{ dir }/#{ node }")
|
141
|
+
sub_files = files_for("#{ dir }/#{ node }")
|
142
|
+
sub_files.map! { |f| "#{ node }/#{ f }" }
|
143
|
+
files += sub_files
|
125
144
|
end
|
126
145
|
end
|
146
|
+
p files
|
127
147
|
end
|
128
148
|
|
129
149
|
def downgrade
|
@@ -137,6 +157,12 @@ module Wize
|
|
137
157
|
unusual_gems(from).each do |gem|
|
138
158
|
f.write(gem)
|
139
159
|
end
|
160
|
+
|
161
|
+
f.write(<<-rb)
|
162
|
+
group :development, :test do
|
163
|
+
gem 'rspec-rails'
|
164
|
+
end
|
165
|
+
rb
|
140
166
|
end
|
141
167
|
end
|
142
168
|
|
@@ -150,21 +176,41 @@ module Wize
|
|
150
176
|
end
|
151
177
|
|
152
178
|
def rails_gen_new
|
153
|
-
|
154
|
-
`
|
179
|
+
puts "Generating new rails app <#{ app_name }>"
|
180
|
+
`rails new #{ app_name } -T`
|
181
|
+
puts "Renaming #{ app_name } to #{ @new_name }"
|
182
|
+
`mv #{ app_name } #{ @new_name }`
|
183
|
+
`rm #{ @new_name }/README.rdoc`
|
155
184
|
end
|
156
185
|
|
157
186
|
def rename_old
|
187
|
+
puts "Renaming #{ @new_name } to #{ @old_name }"
|
158
188
|
`mv #{ @new_name } #{ @old_name }`
|
159
189
|
end
|
160
190
|
|
191
|
+
def app_name
|
192
|
+
@app_name ||= begin
|
193
|
+
lines = File.readlines("#{ @old_name }/config/application.rb")
|
194
|
+
lines.select! { |l| l.start_with?("module") }
|
195
|
+
lines.first.gsub("module", "").strip
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
161
199
|
def copy_common_dirs
|
162
200
|
SOFT_DIR_MAPPINGS.each do |src, dest|
|
163
|
-
|
201
|
+
if Dir.exists?("#{ @new_name }/#{ dest }")
|
202
|
+
`cp -rn #{ @old_name }/#{ src }/* #{ @new_name }/#{ dest }/`
|
203
|
+
else
|
204
|
+
`cp -r #{ @old_name }/#{ src } #{ @new_name }`
|
205
|
+
end
|
164
206
|
end
|
165
207
|
HARD_DIR_MAPPINGS.each do |src, dest|
|
166
208
|
next if src.include?("wrap_parameters")
|
167
|
-
|
209
|
+
if Dir.exists?("#{ @new_name }/#{ dest }")
|
210
|
+
`cp -r #{ @old_name }/#{ src }/* #{ @new_name }/#{ dest }/`
|
211
|
+
else
|
212
|
+
`cp -r #{ @old_name }/#{ src } #{ @new_name }`
|
213
|
+
end
|
168
214
|
end
|
169
215
|
end
|
170
216
|
|