thredded_create_app 0.1.16 → 0.1.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 63c67451a346d7cf30ee4088aa6da71aa0f5c262
4
- data.tar.gz: e3d3a3ee6579c3b385ad949395bc94ee9d6c9e99
3
+ metadata.gz: 317de5cb8dc2f463948d4aaa240ad6d546e88440
4
+ data.tar.gz: 6f61cf6b2c942359d761e45f3e85dd7026e5cc7c
5
5
  SHA512:
6
- metadata.gz: 2d1c6cef277dfbc4a0040beaa41044fb0f964b590e63ac36f104669b65a72c251b6428f53f302237c742585b5aad7b92692fecf5813591f3754faf6cb6f6c20a
7
- data.tar.gz: 2ca16dd5bf5a25fac8ebc0be75bed2303e0323efd534df98f592d84ae969ac2c25ab156b012f59cab2b4c7e75446a514a85549c8ca05c9ddf4f39bbb2963c774
6
+ metadata.gz: 5be5c1c0ad6a6eaef3a0e8a2e19eee17251486e42d383e75108e7ed1cb6d815a35d25afd950b4abd2d0fde8e70aeb4ec64f514466b3c7a2f35aa1171ee130529
7
+ data.tar.gz: a4d0710842921f74c8fdde1b9a47aa9f339a2cd5f1ef7eb0f3be2cd18d38cb4c71e5d8288a8129640e3cb5ff01b550023a2abb5d02b213b6b3052824d64e1ca8
@@ -16,7 +16,8 @@ module ThreddedCreateApp
16
16
  install_gem_bundler_rails: true,
17
17
  start_server: true,
18
18
  simple_form: true,
19
- database: :postgresql
19
+ database: :postgresql,
20
+ rails_version: nil
20
21
  }.freeze
21
22
 
22
23
  def self.start(argv)
@@ -85,13 +86,18 @@ module ThreddedCreateApp
85
86
  ) do |op|
86
87
  flags = Flags.new(op, options)
87
88
 
88
- db_adapters = %i(postgresql mysql2 sqlite3)
89
+ db_adapters = %i[postgresql mysql2 sqlite3]
89
90
  op.on '--database DATABASE', db_adapters,
90
91
  "The database adapter, one of: #{db_adapters.join(', ')} " \
91
92
  "(default: #{DEFAULTS[:database]})" do |v|
92
93
  options[:database] = v.to_sym
93
94
  end
94
95
 
96
+ op.on '--rails-version VERSION',
97
+ 'The exact version of Rails to use (default: latest)' do |value|
98
+ options[:rails_version] = value
99
+ end
100
+
95
101
  flags.bool :simple_form, '--[no-]simple-form', 'Use simple_form'
96
102
 
97
103
  op.separator "\nOther options:"
@@ -57,8 +57,8 @@ module ThreddedCreateApp
57
57
  replace 'app/views/devise/registrations/edit.html.erb',
58
58
  ', :back %>', ', back_url %>'
59
59
  # Make the views render-able outside Devise controllers
60
- %w(app/views/devise/sessions/new.html.erb
61
- app/views/devise/shared/_links.html.erb).each do |path|
60
+ %w[app/views/devise/sessions/new.html.erb
61
+ app/views/devise/shared/_links.html.erb].each do |path|
62
62
  replace path, 'resource_class', 'User', optional: true
63
63
  replace path, /resource_name(?!:)/, ':user'
64
64
  replace path, /resource(?!:)/, ':user', optional: true
@@ -39,8 +39,8 @@ module ThreddedCreateApp
39
39
  inject_into_file 'app/controllers/application_controller.rb',
40
40
  after: /protect_from_forgery.*\n/,
41
41
  content: devise_permitted_params_rb
42
- %w(app/views/devise/registrations/new.html.erb
43
- app/views/devise/registrations/edit.html.erb).each do |path|
42
+ %w[app/views/devise/registrations/new.html.erb
43
+ app/views/devise/registrations/edit.html.erb].each do |path|
44
44
  autofocus = File.read(path).include?(', autofocus: true')
45
45
  replace path, ', autofocus: true', '' if autofocus
46
46
  if @simple_form
@@ -1,33 +1,41 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'yaml'
3
4
  require 'thredded_create_app/tasks/base'
5
+
4
6
  module ThreddedCreateApp
5
7
  module Tasks
6
8
  class CreateRailsApp < Base
7
- def initialize(install_gem_bundler_rails:, database:, **args)
9
+ def initialize(install_gem_bundler_rails:, rails_version:, database:,
10
+ **args)
8
11
  super
9
12
  @install_gem_bundler_rails = install_gem_bundler_rails
10
13
  @database = database
14
+ @rails_version = rails_version
15
+ @user_install = !File.writable?(Gem.dir)
11
16
  end
12
17
 
13
18
  def summary
14
- "Create Rails app #{app_name.inspect} with #{rails_database} and rspec"
19
+ "Create a Rails v#{@rails_version} app #{app_name.inspect} with"\
20
+ " #{rails_database} and rspec"
15
21
  end
16
22
 
17
23
  def before_bundle
18
24
  if @install_gem_bundler_rails
19
- user_install = !File.writable?(Gem.dir)
20
- run 'gem update --system --no-document --quiet' unless user_install
21
- run 'gem install bundler rails --no-document' \
22
- "#{' --user' if user_install}"
25
+ run 'gem update --system --no-document --quiet' unless @user_install
26
+ install_gem 'bundler'
27
+ install_gem 'rails', version: @rails_version
23
28
  end
29
+ @rails_version ||= latest_installed_rails_version
30
+
24
31
  # I have no idea why this bundle exec is necessary on Travis.
25
32
  run "#{'bundle exec ' if ENV['TRAVIS']}" \
26
- "rails new . --skip-bundle --database=#{rails_database} " \
27
- "--skip-test#{verbose? ? ' --verbose' : ' --quiet'}"
33
+ "rails _#{@rails_version}_ new . --skip-bundle" \
34
+ " --database=#{rails_database} " \
35
+ " --skip-test#{verbose? ? ' --verbose' : ' --quiet'}"
28
36
  replace 'Gemfile', /gem 'sass-rails'.*$/, "gem 'sassc-rails'"
29
- add_gem 'rspec-rails', groups: %i(test)
30
- add_gem 'capybara', groups: %i(test)
37
+ add_gem 'rspec-rails', groups: %i[test]
38
+ add_gem 'capybara', groups: %i[test]
31
39
  git_commit summary
32
40
  end
33
41
 
@@ -38,9 +46,21 @@ module ThreddedCreateApp
38
46
 
39
47
  private
40
48
 
49
+ def install_gem(gem_name, version: nil)
50
+ run ["gem install #{gem_name} --no-document",
51
+ ('--user' if @user_install),
52
+ ("-v #{version}" if version)].compact.join(' ')
53
+ end
54
+
41
55
  def rails_database
42
56
  { mysql2: :mysql }.fetch(@database, @database)
43
57
  end
58
+
59
+ def latest_installed_rails_version
60
+ # rubocop:disable Security/YAMLLoad
61
+ YAML.load(`gem specification rails`).version.to_s
62
+ # rubocop:enable Security/YAMLLoad
63
+ end
44
64
  end
45
65
  end
46
66
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ThreddedCreateApp
4
- VERSION = '0.1.16'
4
+ VERSION = '0.1.17'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thredded_create_app
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.16
4
+ version: 0.1.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gleb Mazovetskiy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-02 00:00:00.000000000 Z
11
+ date: 2017-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: term-ansicolor
@@ -205,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
205
205
  version: '0'
206
206
  requirements: []
207
207
  rubyforge_project:
208
- rubygems_version: 2.6.11
208
+ rubygems_version: 2.6.12
209
209
  signing_key:
210
210
  specification_version: 4
211
211
  summary: Rails app generator for Thredded.