wize_upgrader 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
|