declare_schema 0.6.0 → 0.7.0
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/.github/workflows/declare_schema_build.yml +21 -5
- data/Appraisals +21 -4
- data/CHANGELOG.md +40 -0
- data/Gemfile +1 -2
- data/Gemfile.lock +7 -9
- data/README.md +3 -3
- data/Rakefile +17 -4
- data/bin/declare_schema +1 -1
- data/declare_schema.gemspec +1 -1
- data/gemfiles/rails_4_mysql.gemfile +22 -0
- data/gemfiles/{rails_4.gemfile → rails_4_sqlite.gemfile} +1 -2
- data/gemfiles/rails_5_mysql.gemfile +22 -0
- data/gemfiles/{rails_5.gemfile → rails_5_sqlite.gemfile} +1 -2
- data/gemfiles/rails_6_mysql.gemfile +22 -0
- data/gemfiles/{rails_6.gemfile → rails_6_sqlite.gemfile} +2 -3
- data/lib/declare_schema/command.rb +10 -3
- data/lib/declare_schema/model/column.rb +168 -0
- data/lib/declare_schema/model/field_spec.rb +59 -143
- data/lib/declare_schema/model/foreign_key_definition.rb +36 -25
- data/lib/declare_schema/model/table_options_definition.rb +8 -6
- data/lib/declare_schema/version.rb +1 -1
- data/lib/generators/declare_schema/migration/migration_generator.rb +1 -1
- data/lib/generators/declare_schema/migration/migrator.rb +142 -116
- data/spec/lib/declare_schema/field_declaration_dsl_spec.rb +1 -1
- data/spec/lib/declare_schema/field_spec_spec.rb +135 -38
- data/spec/lib/declare_schema/generator_spec.rb +4 -2
- data/spec/lib/declare_schema/interactive_primary_key_spec.rb +8 -2
- data/spec/lib/declare_schema/migration_generator_spec.rb +277 -171
- data/spec/lib/declare_schema/model/column_spec.rb +141 -0
- data/spec/lib/declare_schema/model/foreign_key_definition_spec.rb +93 -0
- data/spec/lib/declare_schema/model/index_definition_spec.rb +4 -5
- data/spec/lib/declare_schema/model/table_options_definition_spec.rb +19 -29
- data/spec/lib/generators/declare_schema/migration/migrator_spec.rb +12 -26
- data/spec/support/acceptance_spec_helpers.rb +3 -3
- metadata +15 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 640e3580d2babdce916a3127b95cd1c84eb8d87b89ca67116496cd3729eea33c
|
4
|
+
data.tar.gz: 30b86c95f516f37ce979ac558e64ac84f0150493392a0626495e83e68b5dc14d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60e109345bc7d2551e441a7c5618f69b3e4df28551bc6c7807329f8831eb3090770fc70c2692487495935bd7c3394f83ccb77cfff1370afccb5a33105229f790
|
7
|
+
data.tar.gz: 5f4cf408c53d963995795786ea847f6e5e4c7319fe91fd95d8eb6d4c05348ddb6cf1fcbbded15764e9b80af0e0903ec26b984d82c467a3a0a6956e421f7d5ace
|
@@ -10,13 +10,29 @@ jobs:
|
|
10
10
|
strategy:
|
11
11
|
matrix:
|
12
12
|
ruby: [ 2.4.5, 2.5.8, 2.6.5, 2.7.1 ]
|
13
|
-
gemfile:
|
13
|
+
gemfile:
|
14
|
+
- gemfiles/rails_4_mysql.gemfile
|
15
|
+
- gemfiles/rails_4_sqlite.gemfile
|
16
|
+
- gemfiles/rails_5_mysql.gemfile
|
17
|
+
- gemfiles/rails_5_sqlite.gemfile
|
18
|
+
- gemfiles/rails_6_mysql.gemfile
|
19
|
+
- gemfiles/rails_6_sqlite.gemfile
|
14
20
|
exclude:
|
15
|
-
|
16
|
-
|
17
|
-
|
21
|
+
- { gemfile: gemfiles/rails_4_mysql.gemfile, ruby: 2.7.1 }
|
22
|
+
- { gemfile: gemfiles/rails_4_sqlite.gemfile, ruby: 2.7.1 }
|
23
|
+
- { gemfile: gemfiles/rails_5_mysql.gemfile, ruby: 2.4.5 }
|
24
|
+
- { gemfile: gemfiles/rails_5_sqlite.gemfile, ruby: 2.4.5 }
|
25
|
+
- { gemfile: gemfiles/rails_6_mysql.gemfile, ruby: 2.4.5 }
|
26
|
+
- { gemfile: gemfiles/rails_6_sqlite.gemfile, ruby: 2.4.5 }
|
18
27
|
env:
|
19
28
|
BUNDLE_GEMFILE: "${{ matrix.gemfile }}"
|
29
|
+
services:
|
30
|
+
mysql:
|
31
|
+
image: mysql:5.7
|
32
|
+
env:
|
33
|
+
MYSQL_ALLOW_EMPTY_PASSWORD: yes
|
34
|
+
ports:
|
35
|
+
- 3306:3306
|
20
36
|
steps:
|
21
37
|
- name: Checkout Branch
|
22
38
|
id: checkout_branch
|
@@ -40,5 +56,5 @@ jobs:
|
|
40
56
|
bundle install --jobs=3 --retry=3 --path=${BUNDLE_PATH:-vendor/bundle} --gemfile=${{ matrix.gemfile }}
|
41
57
|
git config --global user.email "dummy@example.com"
|
42
58
|
git config --global user.name "dummy"
|
43
|
-
bundle exec rake test:prepare_testapp[force]
|
59
|
+
MYSQL_PORT=3306 bundle exec rake test:prepare_testapp[force]
|
44
60
|
bundle exec rake test:all < test_responses.txt
|
data/Appraisals
CHANGED
@@ -1,14 +1,31 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
appraise 'rails-4' do
|
3
|
+
appraise 'rails-4-sqlite' do
|
4
4
|
gem 'rails', '~> 4.2'
|
5
5
|
gem 'sqlite3', '~> 1.3.0'
|
6
6
|
end
|
7
7
|
|
8
|
-
appraise 'rails-
|
8
|
+
appraise 'rails-4-mysql' do
|
9
|
+
gem 'rails', '~> 4.2'
|
10
|
+
gem 'mysql2'
|
11
|
+
end
|
12
|
+
|
13
|
+
appraise 'rails-5-sqlite' do
|
14
|
+
gem 'rails', '~> 5.2'
|
15
|
+
gem 'sqlite3'
|
16
|
+
end
|
17
|
+
|
18
|
+
appraise 'rails-5-mysql' do
|
9
19
|
gem 'rails', '~> 5.2'
|
20
|
+
gem 'mysql2'
|
21
|
+
end
|
22
|
+
|
23
|
+
appraise 'rails-6-sqlite' do
|
24
|
+
gem 'rails', '~> 6.1'
|
25
|
+
gem 'sqlite3'
|
10
26
|
end
|
11
27
|
|
12
|
-
appraise 'rails-6' do
|
13
|
-
gem 'rails', '~> 6.
|
28
|
+
appraise 'rails-6-mysql' do
|
29
|
+
gem 'rails', '~> 6.1'
|
30
|
+
gem 'mysql2'
|
14
31
|
end
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,41 @@ Inspired by [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
4
4
|
|
5
5
|
Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## [0.7.0] - 2020-02-14
|
8
|
+
### Changed
|
9
|
+
- Use `schema_attributes` for generating both up and down change migrations, so they are guaranteed to be symmetrical.
|
10
|
+
Note: Rails schema dumper is still used for the down migration to replace a model that has been dropped.
|
11
|
+
|
12
|
+
## [0.6.4] - 2020-02-08
|
13
|
+
- Fixed a bug where the generated call to add_foreign_key() was not setting `column:`,
|
14
|
+
so it only worked in cases where Rails could infer the foreign key by convention.
|
15
|
+
|
16
|
+
## [0.6.3] - 2020-01-21
|
17
|
+
### Added
|
18
|
+
- Added `add_foreign_key` native rails call in `DeclareSchema::Model::ForeignKeyDefinition#to_add_statement`.
|
19
|
+
|
20
|
+
### Fixed
|
21
|
+
- Fixed a bug in migration generation caused by `DeclareSchema::Migration#create_constraints`
|
22
|
+
calling `DeclareSchema::Model::ForeignKeyDefinition#to_add_statement` with unused parameters.
|
23
|
+
|
24
|
+
- Fixed a bug in `DeclareSchema::Migration#remove_foreign_key` where special characters would not be quoted properly.
|
25
|
+
|
26
|
+
## [0.6.2] - 2021-01-06
|
27
|
+
### Added
|
28
|
+
- Added `sqlite3` as dev dependency for local development
|
29
|
+
|
30
|
+
### Fixed
|
31
|
+
- Fixed a bug in migration generation caused by `DeclareSchema::Model::ForeignKeyDefinition#to_add_statement`
|
32
|
+
not being passed proper arguments.
|
33
|
+
|
34
|
+
## [0.6.1] - 2021-01-06
|
35
|
+
### Added
|
36
|
+
- Added Appraisals for MySQL as well as SQLite.
|
37
|
+
|
38
|
+
### Fixed
|
39
|
+
- Fixed case where primary key index will be gone by the time we get to dropping that primary key
|
40
|
+
because all of the existing primary key columns are being removed.
|
41
|
+
|
7
42
|
## [0.6.0] - 2020-12-23
|
8
43
|
### Added
|
9
44
|
- Fields may now be declared with `:bigint` type which is identical to `:integer, limit 8`
|
@@ -84,6 +119,11 @@ using the appropriate Rails configuration attributes.
|
|
84
119
|
### Added
|
85
120
|
- Initial version from https://github.com/Invoca/hobo_fields v4.1.0.
|
86
121
|
|
122
|
+
[0.7.0]: https://github.com/Invoca/declare_schema/compare/v0.6.3...v0.7.0
|
123
|
+
[0.6.4]: https://github.com/Invoca/declare_schema/compare/v0.6.3...v0.6.4
|
124
|
+
[0.6.3]: https://github.com/Invoca/declare_schema/compare/v0.6.2...v0.6.3
|
125
|
+
[0.6.2]: https://github.com/Invoca/declare_schema/compare/v0.6.1...v0.6.2
|
126
|
+
[0.6.1]: https://github.com/Invoca/declare_schema/compare/v0.6.0...v0.6.1
|
87
127
|
[0.6.0]: https://github.com/Invoca/declare_schema/compare/v0.5.0...v0.6.0
|
88
128
|
[0.5.0]: https://github.com/Invoca/declare_schema/compare/v0.4.2...v0.5.0
|
89
129
|
[0.4.2]: https://github.com/Invoca/declare_schema/compare/v0.4.1...v0.4.2
|
data/Gemfile
CHANGED
@@ -14,10 +14,9 @@ gem 'bundler', '< 2'
|
|
14
14
|
gem "climate_control", '~> 0.2'
|
15
15
|
gem 'pry'
|
16
16
|
gem 'pry-byebug'
|
17
|
-
gem 'mysql2'
|
18
17
|
gem 'rails', '~> 5.2', '>= 5.2.4.3'
|
19
18
|
gem 'responders'
|
20
19
|
gem 'rspec'
|
21
20
|
gem 'rubocop'
|
22
|
-
gem 'sqlite3'
|
23
21
|
gem 'yard'
|
22
|
+
gem 'sqlite3', '~> 1.4'
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
declare_schema (0.
|
4
|
+
declare_schema (0.7.0)
|
5
5
|
rails (>= 4.2)
|
6
6
|
|
7
7
|
GEM
|
@@ -54,7 +54,7 @@ GEM
|
|
54
54
|
thor (>= 0.14.0)
|
55
55
|
arel (9.0.0)
|
56
56
|
ast (2.4.1)
|
57
|
-
bootsnap (1.
|
57
|
+
bootsnap (1.7.2)
|
58
58
|
msgpack (~> 1.0)
|
59
59
|
builder (3.2.4)
|
60
60
|
byebug (11.1.3)
|
@@ -64,12 +64,12 @@ GEM
|
|
64
64
|
crass (1.0.6)
|
65
65
|
diff-lcs (1.4.4)
|
66
66
|
erubi (1.9.0)
|
67
|
-
ffi (1.
|
67
|
+
ffi (1.14.2)
|
68
68
|
globalid (0.4.2)
|
69
69
|
activesupport (>= 4.2.0)
|
70
70
|
i18n (1.8.5)
|
71
71
|
concurrent-ruby (~> 1.0)
|
72
|
-
listen (3.
|
72
|
+
listen (3.4.1)
|
73
73
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
74
74
|
rb-inotify (~> 0.9, >= 0.9.10)
|
75
75
|
loofah (2.7.0)
|
@@ -84,8 +84,7 @@ GEM
|
|
84
84
|
mini_mime (1.0.2)
|
85
85
|
mini_portile2 (2.4.0)
|
86
86
|
minitest (5.14.2)
|
87
|
-
msgpack (1.
|
88
|
-
mysql2 (0.5.3)
|
87
|
+
msgpack (1.4.2)
|
89
88
|
nio4r (2.5.4)
|
90
89
|
nokogiri (1.10.10)
|
91
90
|
mini_portile2 (~> 2.4.0)
|
@@ -176,7 +175,7 @@ GEM
|
|
176
175
|
websocket-driver (0.7.3)
|
177
176
|
websocket-extensions (>= 0.1.0)
|
178
177
|
websocket-extensions (0.1.5)
|
179
|
-
yard (0.9.
|
178
|
+
yard (0.9.26)
|
180
179
|
|
181
180
|
PLATFORMS
|
182
181
|
ruby
|
@@ -188,14 +187,13 @@ DEPENDENCIES
|
|
188
187
|
climate_control (~> 0.2)
|
189
188
|
declare_schema!
|
190
189
|
listen
|
191
|
-
mysql2
|
192
190
|
pry
|
193
191
|
pry-byebug
|
194
192
|
rails (~> 5.2, >= 5.2.4.3)
|
195
193
|
responders
|
196
194
|
rspec
|
197
195
|
rubocop
|
198
|
-
sqlite3
|
196
|
+
sqlite3 (~> 1.4)
|
199
197
|
yard
|
200
198
|
|
201
199
|
BUNDLED WITH
|
data/README.md
CHANGED
@@ -94,7 +94,7 @@ turn all tables into `utf8mb4` supporting tables:
|
|
94
94
|
# frozen_string_literal: true
|
95
95
|
|
96
96
|
Generators::DeclareSchema::Migration::Migrator.default_charset = "utf8mb4"
|
97
|
-
Generators::DeclareSchema::Migration::Migrator.default_collation = "
|
97
|
+
Generators::DeclareSchema::Migration::Migrator.default_collation = "utf8mb4_bin"
|
98
98
|
```
|
99
99
|
|
100
100
|
### Table Configuration
|
@@ -109,7 +109,7 @@ like the following:
|
|
109
109
|
# frozen_string_literal: true
|
110
110
|
|
111
111
|
class Comment < ActiveRecord::Base
|
112
|
-
fields charset: "utf8mb4", collation: "
|
112
|
+
fields charset: "utf8mb4", collation: "utf8mb4_bin" do
|
113
113
|
subject :string, limit: 255
|
114
114
|
content :text, limit: 0xffff_ffff
|
115
115
|
end
|
@@ -131,7 +131,7 @@ look like the following:
|
|
131
131
|
class Comment < ActiveRecord::Base
|
132
132
|
fields do
|
133
133
|
subject :string, limit: 255
|
134
|
-
context :text, limit: 0xffff_ffff, charset: "utf8mb4", collation: "
|
134
|
+
context :text, limit: 0xffff_ffff, charset: "utf8mb4", collation: "utf8mb4_bin"
|
135
135
|
end
|
136
136
|
end
|
137
137
|
```
|
data/Rakefile
CHANGED
@@ -30,15 +30,28 @@ namespace "test" do
|
|
30
30
|
if args.force || !File.directory?(TESTAPP_PATH)
|
31
31
|
FileUtils.remove_entry_secure(TESTAPP_PATH, true)
|
32
32
|
sh %(#{BIN} new #{TESTAPP_PATH} --skip-wizard --skip-bundle)
|
33
|
-
FileUtils.chdir
|
33
|
+
FileUtils.chdir(TESTAPP_PATH)
|
34
|
+
begin
|
35
|
+
require 'mysql2'
|
36
|
+
if ENV['MYSQL_PORT']
|
37
|
+
sh "(echo 'H';
|
38
|
+
echo '1,$s/localhost/127.0.0.1/';
|
39
|
+
echo '/host:/';
|
40
|
+
echo 'a';
|
41
|
+
echo ' port: #{ENV['MYSQL_PORT']}';
|
42
|
+
echo '.';
|
43
|
+
echo w;
|
44
|
+
echo q) | ed #{TESTAPP_PATH}/config/database.yml || echo ed failed!"
|
45
|
+
end
|
46
|
+
rescue LoadError
|
47
|
+
end
|
34
48
|
sh "bundle install"
|
35
49
|
sh "(echo '';
|
36
|
-
echo \"gem '
|
37
|
-
echo \"gem 'therubyracer'\";
|
38
|
-
echo \"gem 'kramdown'\") > Gemfile"
|
50
|
+
echo \"gem 'irb', :group => :development\") >> Gemfile"
|
39
51
|
sh "echo '' > app/models/.gitignore" # because git reset --hard would rm the dir
|
40
52
|
rm ".gitignore" # we need to reset everything in a testapp
|
41
53
|
sh "git init && git add . && git commit -m \"initial commit\""
|
54
|
+
sh "rake db:create"
|
42
55
|
puts "The testapp has been created in '#{TESTAPP_PATH}'"
|
43
56
|
else
|
44
57
|
FileUtils.chdir(TESTAPP_PATH)
|
data/bin/declare_schema
CHANGED
data/declare_schema.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.authors = ['Invoca Development adapted from hobo_fields by Tom Locke']
|
7
7
|
s.email = 'development@invoca.com'
|
8
8
|
s.homepage = 'https://github.com/Invoca/declare_schema'
|
9
|
-
s.summary = 'Database migration generator for Rails'
|
9
|
+
s.summary = 'Database schema declaration and migration generator for Rails'
|
10
10
|
s.description = 'Declare your Rails/active_record model schemas and have database migrations generated for you!'
|
11
11
|
s.name = "declare_schema"
|
12
12
|
s.version = DeclareSchema::VERSION
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "appraisal"
|
6
|
+
gem "bundler", "< 2"
|
7
|
+
gem "climate_control", "~> 0.2"
|
8
|
+
gem "pry"
|
9
|
+
gem "pry-byebug"
|
10
|
+
gem "rails", "~> 4.2"
|
11
|
+
gem "responders"
|
12
|
+
gem "rspec"
|
13
|
+
gem "rubocop"
|
14
|
+
gem "yard"
|
15
|
+
gem "mysql2"
|
16
|
+
|
17
|
+
group :testapp do
|
18
|
+
gem "bootsnap", ">= 1.1.0", require: false
|
19
|
+
gem "listen"
|
20
|
+
end
|
21
|
+
|
22
|
+
gemspec path: "../"
|
@@ -7,13 +7,12 @@ gem "bundler", "< 2"
|
|
7
7
|
gem "climate_control", "~> 0.2"
|
8
8
|
gem "pry"
|
9
9
|
gem "pry-byebug"
|
10
|
-
gem "mysql2"
|
11
10
|
gem "rails", "~> 4.2"
|
12
11
|
gem "responders"
|
13
12
|
gem "rspec"
|
14
13
|
gem "rubocop"
|
15
|
-
gem "sqlite3", "~> 1.3.0"
|
16
14
|
gem "yard"
|
15
|
+
gem "sqlite3", "~> 1.3.0"
|
17
16
|
|
18
17
|
group :testapp do
|
19
18
|
gem "bootsnap", ">= 1.1.0", require: false
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "appraisal"
|
6
|
+
gem "bundler", "< 2"
|
7
|
+
gem "climate_control", "~> 0.2"
|
8
|
+
gem "pry"
|
9
|
+
gem "pry-byebug"
|
10
|
+
gem "rails", "~> 5.2"
|
11
|
+
gem "responders"
|
12
|
+
gem "rspec"
|
13
|
+
gem "rubocop"
|
14
|
+
gem "yard"
|
15
|
+
gem "mysql2"
|
16
|
+
|
17
|
+
group :testapp do
|
18
|
+
gem "bootsnap", ">= 1.1.0", require: false
|
19
|
+
gem "listen"
|
20
|
+
end
|
21
|
+
|
22
|
+
gemspec path: "../"
|
@@ -7,13 +7,12 @@ gem "bundler", "< 2"
|
|
7
7
|
gem "climate_control", "~> 0.2"
|
8
8
|
gem "pry"
|
9
9
|
gem "pry-byebug"
|
10
|
-
gem "mysql2"
|
11
10
|
gem "rails", "~> 5.2"
|
12
11
|
gem "responders"
|
13
12
|
gem "rspec"
|
14
13
|
gem "rubocop"
|
15
|
-
gem "sqlite3"
|
16
14
|
gem "yard"
|
15
|
+
gem "sqlite3"
|
17
16
|
|
18
17
|
group :testapp do
|
19
18
|
gem "bootsnap", ">= 1.1.0", require: false
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "appraisal"
|
6
|
+
gem "bundler", "< 2"
|
7
|
+
gem "climate_control", "~> 0.2"
|
8
|
+
gem "pry"
|
9
|
+
gem "pry-byebug"
|
10
|
+
gem "rails", "~> 6.1"
|
11
|
+
gem "responders"
|
12
|
+
gem "rspec"
|
13
|
+
gem "rubocop"
|
14
|
+
gem "yard"
|
15
|
+
gem "mysql2"
|
16
|
+
|
17
|
+
group :testapp do
|
18
|
+
gem "bootsnap", ">= 1.1.0", require: false
|
19
|
+
gem "listen"
|
20
|
+
end
|
21
|
+
|
22
|
+
gemspec path: "../"
|
@@ -7,13 +7,12 @@ gem "bundler", "< 2"
|
|
7
7
|
gem "climate_control", "~> 0.2"
|
8
8
|
gem "pry"
|
9
9
|
gem "pry-byebug"
|
10
|
-
gem "
|
11
|
-
gem "rails", "~> 6.0"
|
10
|
+
gem "rails", "~> 6.1"
|
12
11
|
gem "responders"
|
13
12
|
gem "rspec"
|
14
13
|
gem "rubocop"
|
15
|
-
gem "sqlite3"
|
16
14
|
gem "yard"
|
15
|
+
gem "sqlite3"
|
17
16
|
|
18
17
|
group :testapp do
|
19
18
|
gem "bootsnap", ">= 1.1.0", require: false
|
@@ -16,7 +16,7 @@ module DeclareSchema
|
|
16
16
|
EOS
|
17
17
|
|
18
18
|
class << self
|
19
|
-
def run(gem, args, version)
|
19
|
+
def run(gem, args, version, gemfile_options = {})
|
20
20
|
command = args.shift
|
21
21
|
|
22
22
|
case command
|
@@ -38,10 +38,17 @@ module DeclareSchema
|
|
38
38
|
end
|
39
39
|
template_path = File.join(Dir.tmpdir, "declare_schema_app_template")
|
40
40
|
File.open(template_path, 'w') do |file|
|
41
|
-
file.puts "gem '#{gem}', '>= #{version}'"
|
41
|
+
file.puts ["gem '#{gem}', '>= #{version}'", (gemfile_options.inspect unless gemfile_options.empty?)].compact.join(', ')
|
42
42
|
end
|
43
43
|
puts "Generating Rails infrastructure..."
|
44
|
-
|
44
|
+
database_option =
|
45
|
+
begin
|
46
|
+
require 'mysql2'
|
47
|
+
' -d mysql'
|
48
|
+
rescue LoadError
|
49
|
+
end
|
50
|
+
puts("rails new #{app_name} #{args * ' '} -m #{template_path}#{database_option}")
|
51
|
+
system("rails new #{app_name} #{args * ' '} -m #{template_path}#{database_option}")
|
45
52
|
File.delete(template_path)
|
46
53
|
|
47
54
|
when /^(g|generate|destroy)$/
|