effective_developer 0.2.5 → 0.2.6
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.
- checksums.yaml +4 -4
- data/README.md +21 -0
- data/app/models/effective/code_writer.rb +26 -5
- data/lib/effective_developer/version.rb +1 -1
- data/lib/scaffolds/views/index.html.haml +0 -2
- data/lib/tasks/rename_class.rake +59 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22b439e6da5070f38393dcbc0f876b8c3d74899b
|
4
|
+
data.tar.gz: 894e2abe799d458168fc1ae9f6a11e34912b2b20
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c521f4a6caa21afbdc021a518b67771483ea3306dae2f222fcf56d9132f1596941462f0227f69285a212d9add5737e0bbfa4d344afb0fe906e9048d3b59a5bb
|
7
|
+
data.tar.gz: 59e2a645d664051e457e7a99321bf2482cbda6b96489da30bc1284f6432afe1f48eea1705906670327298328ecb2d3e4f8c52d1135d1dcd844c226c02dd3fd7d
|
data/README.md
CHANGED
@@ -112,6 +112,27 @@ or
|
|
112
112
|
rake csv:import:scaffold[users]
|
113
113
|
```
|
114
114
|
|
115
|
+
## rename_class
|
116
|
+
|
117
|
+
Quickly rename a rails class throughout the entire app.
|
118
|
+
|
119
|
+
The script considers the `.classify`, `.pluralize` and `.singularize` common usage patterns.
|
120
|
+
|
121
|
+
Then performs a global search and replace, and renames files and directories.
|
122
|
+
|
123
|
+
```ruby
|
124
|
+
rake rename_class[account,team]
|
125
|
+
```
|
126
|
+
|
127
|
+
or
|
128
|
+
|
129
|
+
```ruby
|
130
|
+
rake rename_class[account,team,skipdb]
|
131
|
+
```
|
132
|
+
|
133
|
+
to skip any changes to database migrations.
|
134
|
+
|
135
|
+
|
115
136
|
## reset_pk_sequence
|
116
137
|
|
117
138
|
If you ever run into the error `duplicate key violates unique constraint (id) error`, run this script:
|
@@ -12,12 +12,13 @@ module Effective
|
|
12
12
|
@from = []
|
13
13
|
@to = []
|
14
14
|
|
15
|
-
@
|
15
|
+
@changed = false
|
16
16
|
|
17
|
-
|
17
|
+
@lines = File.open(filename).readlines
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
if block_given?
|
20
|
+
block.call(self)
|
21
|
+
write!
|
21
22
|
end
|
22
23
|
end
|
23
24
|
|
@@ -90,7 +91,7 @@ module Effective
|
|
90
91
|
end
|
91
92
|
end
|
92
93
|
|
93
|
-
true
|
94
|
+
@changed = true
|
94
95
|
end
|
95
96
|
|
96
97
|
def insert_raw(content, index, depth = 0)
|
@@ -107,6 +108,8 @@ module Effective
|
|
107
108
|
|
108
109
|
index += 1
|
109
110
|
end
|
111
|
+
|
112
|
+
@changed = true
|
110
113
|
end
|
111
114
|
|
112
115
|
# Iterate over the lines with a depth, and passed the stripped line to the passed block
|
@@ -194,8 +197,26 @@ module Effective
|
|
194
197
|
depth
|
195
198
|
end
|
196
199
|
|
200
|
+
def changed?
|
201
|
+
@changed == true
|
202
|
+
end
|
203
|
+
|
204
|
+
def gsub!(source, target)
|
205
|
+
lines.each { |line| @changed = true if line.gsub!(source, target) }
|
206
|
+
end
|
207
|
+
|
197
208
|
private
|
198
209
|
|
210
|
+
def write!
|
211
|
+
return false unless changed?
|
212
|
+
|
213
|
+
File.open(filename, 'w') do |file|
|
214
|
+
lines.each { |line| file.write(line) }
|
215
|
+
end
|
216
|
+
|
217
|
+
true
|
218
|
+
end
|
219
|
+
|
199
220
|
def open?(content)
|
200
221
|
stripped = ss(content)
|
201
222
|
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# bundle exec rake rename_class[account, team]
|
2
|
+
|
3
|
+
desc 'Rename a rails class to another'
|
4
|
+
task :rename_class, [:source, :target, :db] => :environment do |t, args|
|
5
|
+
unless args.source.present? && args.target.present?
|
6
|
+
puts 'usage: rake rename_class[account,team] (or rake rename_class[account,team,skipdb] to skip database migrations)' and exit
|
7
|
+
end
|
8
|
+
|
9
|
+
source = args.source.to_s.downcase.singularize
|
10
|
+
target = args.target.to_s.downcase.singularize
|
11
|
+
|
12
|
+
puts "=== Renaming class '#{source.classify}' to '#{target.classify}'"
|
13
|
+
|
14
|
+
whitelist = ['app/', 'db/', 'lib/', 'test/'].compact
|
15
|
+
blacklist = ['db/schema.rb', ('db/migrate' if args.db == 'skipdb')].compact
|
16
|
+
|
17
|
+
# Rename any directories in the app
|
18
|
+
Dir.glob('**/*').each do |path|
|
19
|
+
next unless whitelist.any? { |ok| path.start_with?(ok) }
|
20
|
+
next if blacklist.any? { |nope| path.start_with?(nope) }
|
21
|
+
next unless File.directory?(path)
|
22
|
+
|
23
|
+
changed = path.gsub(source.pluralize, target.pluralize).gsub(source, target)
|
24
|
+
|
25
|
+
if path != changed
|
26
|
+
File.rename(path, changed)
|
27
|
+
puts "renamed: #{path} => #{changed}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# For every file in the app
|
32
|
+
Dir.glob('**/*.*').each do |path|
|
33
|
+
next unless whitelist.any? { |ok| path.start_with?(ok) }
|
34
|
+
next if blacklist.any? { |nope| path.start_with?(nope) }
|
35
|
+
|
36
|
+
changed = path.gsub(source.pluralize, target.pluralize).gsub(source, target)
|
37
|
+
|
38
|
+
if path != changed
|
39
|
+
File.rename(path, changed)
|
40
|
+
puts "renamed: #{path} => #{changed}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# For every file in the app
|
45
|
+
Dir.glob('**/*.*').each do |path|
|
46
|
+
next unless whitelist.any? { |ok| path.start_with?(ok) }
|
47
|
+
next if blacklist.any? { |nope| path.start_with?(nope) }
|
48
|
+
|
49
|
+
writer = Effective::CodeWriter.new(path) do |w|
|
50
|
+
w.gsub!(source.classify.pluralize, target.classify.pluralize)
|
51
|
+
w.gsub!(source.classify, target.classify)
|
52
|
+
w.gsub!(source.pluralize, target.pluralize)
|
53
|
+
w.gsub!(source, target)
|
54
|
+
end
|
55
|
+
|
56
|
+
puts "updated: #{path}" if writer.changed?
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_developer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- lib/scaffolds/views/show.html.haml
|
95
95
|
- lib/tasks/effective_csv_importer.rake
|
96
96
|
- lib/tasks/pg_pull.rake
|
97
|
+
- lib/tasks/rename_class.rake
|
97
98
|
- lib/tasks/reset_pk_sequence.rake
|
98
99
|
- lib/tasks/validate.rake
|
99
100
|
homepage: https://github.com/code-and-effect/effective_developer
|