effective_developer 0.6.8 → 0.6.11
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 +6 -0
- data/app/models/effective/form_upgrader.rb +32 -8
- data/lib/effective_developer/version.rb +1 -1
- data/lib/tasks/pg_pull.rake +13 -10
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c82e5a358ef279b2ccccaaf54c097ca549449b4d7c4c076eea41f88f5646f3e
|
4
|
+
data.tar.gz: c66fce38e2b60d3796964d51fd718911736c2be3f4f0e0413235b84095e25dd5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9fc0933cede1643a01fa8000c46d5beb1d8184e5eb74750adf6120cb4747789a65df62079f96b1a2946a78c177739a05880bfd925366e082b3493b2a2c6f1ec
|
7
|
+
data.tar.gz: f74388c2dd737bf879ff0a3b147c577b20eac0407a8d4b176942716a93cb75292c9ec2376211d176256e9aae0f50484d40adb4fac153f613283f24ed1b84991c
|
data/README.md
CHANGED
@@ -238,6 +238,12 @@ rake pg:pull
|
|
238
238
|
rake pg:pull[staging]
|
239
239
|
```
|
240
240
|
|
241
|
+
By default, any data in the `logs` table will be excluded. To include the logs data:
|
242
|
+
|
243
|
+
```ruby
|
244
|
+
rake pg:pull logs=true
|
245
|
+
```
|
246
|
+
|
241
247
|
## pg:load
|
242
248
|
|
243
249
|
Drops and re-creates the local database then initializes database with the contents of latest.dump
|
@@ -38,6 +38,8 @@ module Effective
|
|
38
38
|
private
|
39
39
|
|
40
40
|
SIMPLE_FORM_FOR_REGEX = /simple_form_for( |\()(\[:[^,]+, ?[^,]+\])?(([^,]+),)?.+do \|(\w+)\|/
|
41
|
+
SIMPLE_FORM_FOR_REGEX2 = /simple_form_for\((\w+).+?\) do \|(\w+)\|/
|
42
|
+
|
41
43
|
SIMPLE_FORM_INPUT_ATTRIBUTE = /\.input( |\():(\w+)/
|
42
44
|
SIMPLE_FORM_INPUT_AS_ONE = /(as: :(\w+))/
|
43
45
|
SIMPLE_FORM_INPUT_AS_TWO = /(:as => :(\w+))/
|
@@ -53,17 +55,38 @@ module Effective
|
|
53
55
|
# Replace simple_form_for
|
54
56
|
writer.all { |line| line.include?('simple_form_for') }.each do |line|
|
55
57
|
content = writer.lines[line]
|
58
|
+
|
59
|
+
# Try first time
|
56
60
|
matched = content.match(SIMPLE_FORM_FOR_REGEX)
|
57
|
-
raise("unable to match simple_form_for from:\n#{content}") unless matched.present?
|
58
61
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
+
if matched.present?
|
63
|
+
original = matched[0]
|
64
|
+
model = matched[2] || matched[4]
|
65
|
+
letter = matched[5]
|
62
66
|
|
63
|
-
|
67
|
+
if original && model && letter
|
68
|
+
content.sub!(original, "effective_form_with(model: #{model}) do |#{letter}|")
|
69
|
+
writer.replace(line, content)
|
70
|
+
next
|
71
|
+
end
|
72
|
+
end
|
64
73
|
|
65
|
-
|
66
|
-
|
74
|
+
# Try second time
|
75
|
+
matched = content.match(SIMPLE_FORM_FOR_REGEX2)
|
76
|
+
|
77
|
+
if matched.present?
|
78
|
+
original = matched[0]
|
79
|
+
model = matched[1]
|
80
|
+
letter = matched[2]
|
81
|
+
|
82
|
+
if original && model && letter
|
83
|
+
content.sub!(original, "effective_form_with(model: #{model}) do |#{letter}|")
|
84
|
+
writer.replace(line, content)
|
85
|
+
next
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
puts("unable to determine simple_form_for subject from:\n#{content}")
|
67
90
|
end
|
68
91
|
|
69
92
|
# Try to figure out klass again if its missing from filename
|
@@ -189,7 +212,8 @@ module Effective
|
|
189
212
|
when 'text' then 'text_area'
|
190
213
|
when 'url' then 'url_field'
|
191
214
|
else
|
192
|
-
|
215
|
+
puts("unknown input type #{input_type} (for attribute :#{attribute})")
|
216
|
+
'text_field'
|
193
217
|
end
|
194
218
|
end
|
195
219
|
|
data/lib/tasks/pg_pull.rake
CHANGED
@@ -8,18 +8,20 @@ namespace :pg do
|
|
8
8
|
# bundle exec rake pg:pull
|
9
9
|
# bundle exec rake pg:pull[staging]
|
10
10
|
# bundle exec rake pg:pull[158.204.33.124]
|
11
|
+
# bundle exec rake pg:pull logs=true
|
11
12
|
# bundle exec rake pg:pull filename=latest.dump database=example
|
13
|
+
# bundle exec rake pg:pull filename=latest.dump database=example logs=true
|
12
14
|
# DATABASE=example bundle exec rake pg:load
|
13
15
|
desc 'Creates a new backup on remote server and downloads it to latest.dump'
|
14
16
|
task :pull, [:remote] => :environment do |t, args|
|
15
17
|
defaults = { database: nil, filename: (ENV['DATABASE'] || 'latest') + '.dump' }
|
16
|
-
env_keys = { database: ENV['DATABASE'], filename: ENV['FILENAME'] }
|
18
|
+
env_keys = { database: ENV['DATABASE'], filename: ENV['FILENAME'], logs: ENV['LOGS'] }
|
17
19
|
keywords = ARGV.map { |a| a.split('=') if a.include?('=') }.compact.inject({}) { |h, (k, v)| h[k.to_sym] = v; h }
|
18
20
|
args.with_defaults(defaults.compact.merge(env_keys.compact).merge(keywords))
|
19
21
|
|
20
22
|
# Validate Config
|
21
|
-
config = ActiveRecord::Base.configurations[Rails.env]
|
22
23
|
configs = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env)
|
24
|
+
config = configs.first
|
23
25
|
|
24
26
|
if configs.length > 1 && args.database.blank?
|
25
27
|
puts "Multiple database configs exist for #{Rails.env} environment."
|
@@ -62,7 +64,7 @@ namespace :pg do
|
|
62
64
|
# SSH into hatchbox and call rake pg:save there to create latest.dump
|
63
65
|
unless(result = `ssh -T #{args.user}@#{args.remote} << EOF
|
64
66
|
cd ~/#{args.app}/current/
|
65
|
-
bundle exec rake pg:save database=#{args.database} filename=#{args.filename}
|
67
|
+
bundle exec rake pg:save database=#{args.database} filename=#{args.filename} logs=#{args.logs}
|
66
68
|
`).include?('Saving database completed') # The output of pg:save down below
|
67
69
|
puts("Error calling ssh #{args.user}@#{args.remote} and running rake pg:save on hatchbox from ~/#{args.app}/current/")
|
68
70
|
abort(result)
|
@@ -102,8 +104,8 @@ namespace :pg do
|
|
102
104
|
end
|
103
105
|
|
104
106
|
# Validate Config
|
105
|
-
config = ActiveRecord::Base.configurations[Rails.env]
|
106
107
|
configs = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env)
|
108
|
+
config = configs.first
|
107
109
|
|
108
110
|
if configs.length > 1 && args.database.blank?
|
109
111
|
puts "Multiple database configs exist for #{Rails.env} environment."
|
@@ -140,7 +142,7 @@ namespace :pg do
|
|
140
142
|
desc 'Saves the development database to a postgresql .dump file (latest.dump by default)'
|
141
143
|
task :save, [:filename] => :environment do |t, args|
|
142
144
|
defaults = { database: nil, filename: (ENV['DATABASE'] || 'latest') + '.dump' }
|
143
|
-
env_keys = { database: ENV['DATABASE'], filename: ENV['FILENAME'] }
|
145
|
+
env_keys = { database: ENV['DATABASE'], filename: ENV['FILENAME'], logs: ENV['LOGS'] }
|
144
146
|
keywords = ARGV.map { |a| a.split('=') if a.include?('=') }.compact.inject({}) { |h, (k, v)| h[k.to_sym] = v; h }
|
145
147
|
args.with_defaults(defaults.compact.merge(env_keys.compact).merge(keywords))
|
146
148
|
|
@@ -151,8 +153,8 @@ namespace :pg do
|
|
151
153
|
{ username: uri.user, password: uri.password, host: uri.host, port: (uri.port || 5432), database: uri.path.sub('/', '') }
|
152
154
|
else
|
153
155
|
# Validate Config
|
154
|
-
config = ActiveRecord::Base.configurations[Rails.env]
|
155
156
|
configs = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env)
|
157
|
+
config = configs.first
|
156
158
|
|
157
159
|
if configs.length > 1 && args.database.blank?
|
158
160
|
puts "Multiple database configs exist for #{Rails.env} environment."
|
@@ -179,7 +181,9 @@ namespace :pg do
|
|
179
181
|
|
180
182
|
puts "=== Saving local '#{db[:database]}' database to #{args.filename}"
|
181
183
|
|
182
|
-
|
184
|
+
exclude_table_data = "--exclude-table-data=logs" unless (args.logs == 'true')
|
185
|
+
|
186
|
+
if system("export PGPASSWORD=#{db[:password]}; pg_dump -Fc --no-acl --no-owner #{exclude_table_data} -h #{db[:host]} -p #{db[:port]} -U #{db[:username]} #{db[:database]} > #{args.filename}")
|
183
187
|
puts "Saving database completed"
|
184
188
|
else
|
185
189
|
abort "Error saving database"
|
@@ -189,11 +193,10 @@ namespace :pg do
|
|
189
193
|
desc 'Clones the production (--remote heroku by default) database to staging (--remote staging by default)'
|
190
194
|
task :clone, [:source_remote, :target_remote] => :environment do |t, args|
|
191
195
|
args.with_defaults(:source_remote => 'heroku', :target_remote => 'staging')
|
192
|
-
db = ActiveRecord::Base.configurations[Rails.env]
|
193
196
|
|
194
197
|
puts "=== Cloning remote '#{args.source_remote}' to '#{args.target_remote}'"
|
195
198
|
|
196
|
-
Bundler.
|
199
|
+
Bundler.with_unbundled_env do
|
197
200
|
unless system("heroku pg:backups:capture --remote #{args.source_remote}")
|
198
201
|
abort "Error capturing heroku backup"
|
199
202
|
end
|
@@ -240,7 +243,7 @@ namespace :pg do
|
|
240
243
|
puts "=== Cloning local table '#{args.table}' to remote #{args.remote} database"
|
241
244
|
|
242
245
|
# Dump my local database table
|
243
|
-
db = ActiveRecord::Base.configurations
|
246
|
+
db = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env).first
|
244
247
|
tmpfile = "tmp/#{args.table}.sql"
|
245
248
|
|
246
249
|
unless system("pg_dump --data-only --table=#{args.table} -h localhost -U '#{db['username']}' '#{db['database']}' > #{tmpfile}")
|
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.6.
|
4
|
+
version: 0.6.11
|
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:
|
11
|
+
date: 2022-09-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|