combustion 0.7.0 → 0.8.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 +5 -5
- data/.gitignore +2 -1
- data/.rubocop.yml +31 -0
- data/.travis.yml +5 -5
- data/Appraisals +13 -0
- data/Gemfile +2 -0
- data/HISTORY +5 -0
- data/README.md +2 -2
- data/Rakefile +11 -1
- data/combustion.gemspec +26 -22
- data/exe/combust +3 -2
- data/gemfiles/rails_5.0.gemfile +1 -0
- data/gemfiles/rails_5.1.gemfile +1 -0
- data/gemfiles/rails_5.2.gemfile +7 -0
- data/lib/combustion.rb +35 -22
- data/lib/combustion/application.rb +23 -27
- data/lib/combustion/configurations/action_controller.rb +11 -0
- data/lib/combustion/configurations/action_mailer.rb +10 -0
- data/lib/combustion/configurations/active_record.rb +13 -0
- data/lib/combustion/database.rb +23 -13
- data/lib/combustion/database/load_schema.rb +14 -4
- data/lib/combustion/database/migrate.rb +29 -12
- data/lib/combustion/database/reset.rb +26 -21
- data/lib/combustion/databases/base.rb +3 -1
- data/lib/combustion/databases/firebird.rb +2 -0
- data/lib/combustion/databases/mysql.rb +55 -26
- data/lib/combustion/databases/oracle.rb +2 -0
- data/lib/combustion/databases/postgresql.rb +11 -10
- data/lib/combustion/databases/sql_server.rb +4 -2
- data/lib/combustion/databases/sqlite.rb +8 -6
- data/lib/combustion/generator.rb +16 -14
- data/spec/database_spec.rb +16 -12
- data/spec/dummy/db/migrate/20150717075542_create_dummy_test_table.rb +3 -1
- data/spec/dummy/db/migrate/20150717075543_create_dummy_test_table_in_another_db.rb +3 -1
- data/spec/dummy/lib/engine.rb +3 -1
- data/spec/dummy/spec/internal/app/models/model.rb +3 -1
- data/spec/dummy/spec/internal/app/models/model_in_another_db.rb +3 -1
- data/spec/dummy/spec/internal/config/routes.rb +2 -0
- data/spec/dummy/spec/internal/db/schema.rb +2 -0
- data/spec/spec_helper.rb +6 -5
- data/templates/config.ru +4 -2
- data/templates/routes.rb +2 -0
- data/templates/schema.rb +2 -0
- metadata +22 -4
- data/bin/literals +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6fe7aab6e68f602f2b368bc8fa1b0bdeadc34a72eacd4b9d3c30ce6f6dfd6d9c
|
4
|
+
data.tar.gz: 7342be839ec93b552be92ba789f8dc1d102b8ceeb301fe9e0ad820724dfd4ebf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04bba0ac0ac7d86e114549ff9e59e9f35098238b2dc1774254bcfab367938467c9b88790d3a45f17ff50d8c0865d7b9691da25b1b8fdcf6489bebd260880b241
|
7
|
+
data.tar.gz: 8bce1e790cd64eb3c9fc24cfa83d53c1a2627b7fcf82b6ea8759bc856247b92c22a18cd3820b8b41d9f37cc957c6816875991d80c2681baf59bd1a7709cea2ca
|
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
inherit_from:
|
2
|
+
- https://gist.githubusercontent.com/pat/ba3b8ffb1901bfe5439b460943b6b019/raw/.rubocop.yml
|
3
|
+
|
4
|
+
AllCops:
|
5
|
+
TargetRubyVersion: 2.2
|
6
|
+
|
7
|
+
Layout/DotPosition:
|
8
|
+
EnforcedStyle: trailing
|
9
|
+
|
10
|
+
Layout/CaseIndentation:
|
11
|
+
EnforcedStyle: end
|
12
|
+
|
13
|
+
Layout/IndentHeredoc:
|
14
|
+
Enabled: false
|
15
|
+
|
16
|
+
Lint/EndAlignment:
|
17
|
+
EnforcedStyleAlignWith: variable
|
18
|
+
|
19
|
+
Metrics/BlockLength:
|
20
|
+
Exclude:
|
21
|
+
- 'combustion.gemspec'
|
22
|
+
|
23
|
+
Style/ClassAndModuleChildren:
|
24
|
+
Enabled: false
|
25
|
+
|
26
|
+
Style/Documentation:
|
27
|
+
Enabled: false
|
28
|
+
|
29
|
+
Style/MultilineTernaryOperator:
|
30
|
+
Exclude:
|
31
|
+
- 'spec/dummy/db/migrate/*.rb'
|
data/.travis.yml
CHANGED
@@ -5,16 +5,16 @@ env:
|
|
5
5
|
- "DB_ADAPTER=postgresql"
|
6
6
|
- "DB_ADAPTER=mysql2"
|
7
7
|
rvm:
|
8
|
-
- 2.2.
|
9
|
-
- 2.3.
|
10
|
-
- 2.4.
|
8
|
+
- 2.2.9
|
9
|
+
- 2.3.6
|
10
|
+
- 2.4.3
|
11
|
+
- 2.5.0
|
11
12
|
before_install:
|
12
13
|
- gem update --system
|
13
14
|
- gem install bundler
|
14
15
|
before_script:
|
15
|
-
- ./bin/literals
|
16
16
|
- bundle exec appraisal install
|
17
|
-
script: 'bundle exec appraisal
|
17
|
+
script: 'bundle exec appraisal rake'
|
18
18
|
services:
|
19
19
|
- mysql
|
20
20
|
- postgresql
|
data/Appraisals
CHANGED
@@ -1,33 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
if RUBY_VERSION.to_f <= 2.3
|
2
4
|
appraise "rails-3.1" do
|
3
5
|
gem "rails", "~> 3.1.12"
|
4
6
|
gem "mysql2", "~> 0.3.10"
|
7
|
+
gem "pg", "< 1.0"
|
5
8
|
end
|
6
9
|
|
7
10
|
appraise "rails-3.2" do
|
8
11
|
gem "rails", "~> 3.2.22.5"
|
9
12
|
gem "mysql2", "~> 0.3.10"
|
13
|
+
gem "pg", "< 1.0"
|
10
14
|
end
|
11
15
|
|
12
16
|
appraise "rails-4.0" do
|
13
17
|
gem "rails", "~> 4.0.13"
|
14
18
|
gem "mysql2", "~> 0.3.10"
|
19
|
+
gem "pg", "< 1.0"
|
15
20
|
end
|
16
21
|
|
17
22
|
appraise "rails-4.1" do
|
18
23
|
gem "rails", "~> 4.1.16"
|
19
24
|
gem "mysql2", "~> 0.3.13"
|
25
|
+
gem "pg", "< 1.0"
|
20
26
|
end
|
21
27
|
|
22
28
|
appraise "rails-4.2" do
|
23
29
|
gem "rails", "~> 4.2.8"
|
30
|
+
gem "pg", "< 1.0"
|
24
31
|
end
|
25
32
|
end
|
26
33
|
|
27
34
|
appraise "rails-5.0" do
|
28
35
|
gem "rails", "~> 5.0.2"
|
36
|
+
gem "pg", "< 1.0"
|
29
37
|
end
|
30
38
|
|
31
39
|
appraise "rails-5.1" do
|
32
40
|
gem "rails", "~> 5.1.0"
|
41
|
+
gem "pg", "< 1.0"
|
42
|
+
end
|
43
|
+
|
44
|
+
appraise "rails-5.2" do
|
45
|
+
gem "rails", "~> 5.2.0.rc1"
|
33
46
|
end
|
data/Gemfile
CHANGED
data/HISTORY
CHANGED
data/README.md
CHANGED
@@ -10,10 +10,10 @@ Get the gem into either your gemspec or your Gemfile, depending on how you manag
|
|
10
10
|
|
11
11
|
```ruby
|
12
12
|
# gemspec
|
13
|
-
gem.add_development_dependency 'combustion', '~> 0.
|
13
|
+
gem.add_development_dependency 'combustion', '~> 0.8.0'
|
14
14
|
|
15
15
|
# Gemfile
|
16
|
-
gem 'combustion', '~> 0.
|
16
|
+
gem 'combustion', '~> 0.8.0', :group => :test
|
17
17
|
```
|
18
18
|
|
19
19
|
In your `spec_helper.rb`, get Combustion to set itself up - which has to happen before you introduce `rspec/rails` and - if being used - `capybara/rails`. Here's an example within context:
|
data/Rakefile
CHANGED
@@ -1 +1,11 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "bundler/gem_tasks"
|
4
|
+
require "rspec/core/rake_task"
|
5
|
+
require "rubocop/rake_task"
|
6
|
+
|
7
|
+
RSpec::Core::RakeTask.new(:spec)
|
8
|
+
RuboCop::RakeTask.new(:rubocop)
|
9
|
+
|
10
|
+
Rake::Task["default"].clear if Rake::Task.task_defined?("default")
|
11
|
+
task :default => %i[ rubocop spec ]
|
data/combustion.gemspec
CHANGED
@@ -1,30 +1,34 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
Gem::Specification.new do |s|
|
3
|
-
s.name =
|
4
|
-
s.version =
|
5
|
-
s.authors = [
|
6
|
-
s.email = [
|
7
|
-
s.homepage =
|
8
|
-
s.summary =
|
9
|
-
s.description =
|
10
|
-
s.license =
|
4
|
+
s.name = "combustion"
|
5
|
+
s.version = "0.8.0"
|
6
|
+
s.authors = ["Pat Allan"]
|
7
|
+
s.email = ["pat@freelancing-gods.com"]
|
8
|
+
s.homepage = "https://github.com/pat/combustion"
|
9
|
+
s.summary = "Elegant Rails Engine Testing"
|
10
|
+
s.description = "Test your Rails Engines without needing a full Rails app"
|
11
|
+
s.license = "MIT"
|
11
12
|
|
12
|
-
s.rubyforge_project =
|
13
|
+
s.rubyforge_project = "combustion"
|
13
14
|
|
14
15
|
s.files = `git ls-files`.split("\n")
|
15
16
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
-
s.executables = `git ls-files -- exe/*`.split("\n").map
|
17
|
-
|
18
|
-
|
17
|
+
s.executables = `git ls-files -- exe/*`.split("\n").map do |file|
|
18
|
+
File.basename(file)
|
19
|
+
end
|
20
|
+
s.bindir = "exe"
|
21
|
+
s.require_paths = ["lib"]
|
19
22
|
|
20
|
-
s.add_runtime_dependency
|
21
|
-
s.add_runtime_dependency
|
22
|
-
s.add_runtime_dependency
|
23
|
+
s.add_runtime_dependency "activesupport", ">= 3.0.0"
|
24
|
+
s.add_runtime_dependency "railties", ">= 3.0.0"
|
25
|
+
s.add_runtime_dependency "thor", ">= 0.14.6"
|
23
26
|
|
24
|
-
s.add_development_dependency
|
25
|
-
s.add_development_dependency
|
26
|
-
s.add_development_dependency
|
27
|
-
s.add_development_dependency
|
28
|
-
s.add_development_dependency
|
29
|
-
s.add_development_dependency
|
27
|
+
s.add_development_dependency "appraisal", "~> 2.1.0"
|
28
|
+
s.add_development_dependency "mysql2"
|
29
|
+
s.add_development_dependency "pg"
|
30
|
+
s.add_development_dependency "rails"
|
31
|
+
s.add_development_dependency "rspec"
|
32
|
+
s.add_development_dependency "rubocop", "~> 0.50.0"
|
33
|
+
s.add_development_dependency "sqlite3"
|
30
34
|
end
|
data/exe/combust
CHANGED
data/gemfiles/rails_5.0.gemfile
CHANGED
data/gemfiles/rails_5.1.gemfile
CHANGED
data/lib/combustion.rb
CHANGED
@@ -1,38 +1,49 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rails"
|
4
|
+
require "active_support/dependencies"
|
3
5
|
|
4
6
|
module Combustion
|
5
|
-
|
6
|
-
|
7
|
+
module Configurations
|
8
|
+
#
|
9
|
+
end
|
10
|
+
|
11
|
+
mattr_accessor :path, :schema_format, :setup_environment
|
7
12
|
|
8
|
-
self.path =
|
13
|
+
self.path = "/spec/internal"
|
9
14
|
self.schema_format = :ruby
|
10
15
|
|
11
|
-
if Rails.version.
|
12
|
-
|
13
|
-
sprockets )
|
16
|
+
MODULES = if Rails.version.to_f >= 3.1
|
17
|
+
%w[ active_record action_controller action_view action_mailer sprockets ]
|
14
18
|
else
|
15
|
-
|
19
|
+
%w[ active_record action_controller action_view action_mailer ]
|
16
20
|
end
|
17
21
|
|
18
22
|
def self.initialize!(*modules, &block)
|
19
|
-
|
23
|
+
self.setup_environment = block if block_given?
|
20
24
|
|
21
25
|
options = modules.extract_options!
|
22
|
-
modules =
|
26
|
+
modules = MODULES if modules == [:all]
|
23
27
|
modules.each { |mod| require "#{mod}/railtie" }
|
24
28
|
|
25
29
|
Bundler.require :default, Rails.env
|
26
30
|
|
27
31
|
Combustion::Application.configure_for_combustion
|
32
|
+
include_database modules, options
|
33
|
+
Combustion::Application.initialize!
|
34
|
+
include_rspec
|
35
|
+
end
|
28
36
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
37
|
+
def self.include_database(modules, options)
|
38
|
+
return unless modules.map(&:to_s).include? "active_record"
|
39
|
+
|
40
|
+
Combustion::Application.config.to_prepare do
|
41
|
+
Combustion::Database.setup(options)
|
33
42
|
end
|
43
|
+
end
|
34
44
|
|
35
|
-
|
45
|
+
def self.include_rspec
|
46
|
+
return unless defined?(RSpec) && RSpec.respond_to?(:configure)
|
36
47
|
|
37
48
|
RSpec.configure do |config|
|
38
49
|
include_capybara_into config
|
@@ -41,7 +52,7 @@ module Combustion
|
|
41
52
|
if Combustion::Application.routes.respond_to?(:mounted_helpers)
|
42
53
|
config.include Combustion::Application.routes.mounted_helpers
|
43
54
|
end
|
44
|
-
end
|
55
|
+
end
|
45
56
|
end
|
46
57
|
|
47
58
|
def self.include_capybara_into(config)
|
@@ -49,12 +60,14 @@ module Combustion
|
|
49
60
|
|
50
61
|
config.include Capybara::RSpecMatchers if defined?(Capybara::RSpecMatchers)
|
51
62
|
config.include Capybara::DSL if defined?(Capybara::DSL)
|
63
|
+
return if defined?(Capybara::RSpecMatchers) || defined?(Capybara::DSL)
|
52
64
|
|
53
|
-
|
54
|
-
config.include Capybara
|
55
|
-
end
|
65
|
+
config.include Capybara
|
56
66
|
end
|
57
67
|
end
|
58
68
|
|
59
|
-
require
|
60
|
-
require
|
69
|
+
require "combustion/application"
|
70
|
+
require "combustion/configurations/action_controller"
|
71
|
+
require "combustion/configurations/action_mailer"
|
72
|
+
require "combustion/configurations/active_record"
|
73
|
+
require "combustion/database"
|
@@ -1,15 +1,22 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "securerandom"
|
4
|
+
require "digest"
|
5
|
+
Rails.env = ENV["RAILS_ENV"] || "test"
|
3
6
|
|
4
7
|
module Combustion
|
5
8
|
class Application < Rails::Application
|
6
9
|
# Core Settings
|
7
10
|
config.cache_classes = true
|
8
|
-
config.whiny_nils = true if Rails.version.to_s < '4.0.0'
|
9
11
|
config.consider_all_requests_local = true
|
10
12
|
config.secret_token = Digest::SHA1.hexdigest Time.now.to_s
|
11
13
|
config.eager_load = Rails.env.production?
|
12
|
-
|
14
|
+
|
15
|
+
if Rails.version.to_f >= 4.0
|
16
|
+
config.secret_key_base = SecureRandom.hex
|
17
|
+
else
|
18
|
+
config.whiny_nils = true
|
19
|
+
end
|
13
20
|
|
14
21
|
# ActiveSupport Settings
|
15
22
|
config.active_support.deprecation = :stderr
|
@@ -20,31 +27,20 @@ module Combustion
|
|
20
27
|
def self.configure_for_combustion
|
21
28
|
config.root = File.expand_path File.join(Dir.pwd, Combustion.path)
|
22
29
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
if defined?(ActionController::Railtie)
|
31
|
-
config.action_dispatch.show_exceptions = false
|
32
|
-
config.action_controller.perform_caching = false
|
33
|
-
config.action_controller.allow_forgery_protection = false
|
34
|
-
end
|
35
|
-
|
36
|
-
if defined?(ActionMailer::Railtie)
|
37
|
-
config.action_mailer.delivery_method = :test
|
38
|
-
config.action_mailer.default_url_options = {:host => 'www.example.com'}
|
39
|
-
end
|
40
|
-
|
41
|
-
if defined?(Sprockets)
|
42
|
-
config.assets.enabled = true
|
43
|
-
end
|
30
|
+
Combustion::Configurations::ActiveRecord.call config
|
31
|
+
Combustion::Configurations::ActionController.call config
|
32
|
+
Combustion::Configurations::ActionMailer.call config
|
33
|
+
|
34
|
+
config.assets.enabled = true if defined?(Sprockets)
|
44
35
|
end
|
45
36
|
|
46
|
-
initializer
|
47
|
-
|
37
|
+
initializer(
|
38
|
+
:load_customized_environment_for_combustion,
|
39
|
+
:before => :load_environment_config,
|
40
|
+
:group => :all
|
41
|
+
) do
|
42
|
+
next unless Combustion.setup_environment
|
43
|
+
Combustion::Application.class_eval(&Combustion.setup_environment)
|
48
44
|
end
|
49
45
|
end
|
50
46
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Combustion::Configurations::ActionController
|
4
|
+
def self.call(config)
|
5
|
+
return unless defined?(ActionController::Railtie)
|
6
|
+
|
7
|
+
config.action_dispatch.show_exceptions = false
|
8
|
+
config.action_controller.perform_caching = false
|
9
|
+
config.action_controller.allow_forgery_protection = false
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Combustion::Configurations::ActionMailer
|
4
|
+
def self.call(config)
|
5
|
+
return unless defined?(ActionMailer::Railtie)
|
6
|
+
|
7
|
+
config.action_mailer.delivery_method = :test
|
8
|
+
config.action_mailer.default_url_options = {:host => "www.example.com"}
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Combustion::Configurations::ActiveRecord
|
4
|
+
def self.call(config)
|
5
|
+
return unless defined?(ActiveRecord::Railtie)
|
6
|
+
return unless ::ActiveRecord.constants.include?(:MassAssignmentSecurity)
|
7
|
+
|
8
|
+
# Turn on ActiveRecord attribute whitelisting
|
9
|
+
# This way the dummy app matches new rails apps re: this setting
|
10
|
+
config.active_record.whitelist_attributes = true
|
11
|
+
config.active_record.mass_assignment_sanitizer = :strict
|
12
|
+
end
|
13
|
+
end
|
data/lib/combustion/database.rb
CHANGED
@@ -1,25 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Combustion
|
2
4
|
module Databases
|
3
5
|
#
|
4
6
|
end
|
5
7
|
|
6
8
|
class Database
|
9
|
+
DEFAULT_OPTIONS = {
|
10
|
+
:database_reset => true,
|
11
|
+
:load_schema => true,
|
12
|
+
:database_migrate => true
|
13
|
+
}.freeze
|
14
|
+
|
7
15
|
def self.setup(options = {})
|
8
|
-
|
9
|
-
|
10
|
-
Combustion::Database::
|
16
|
+
options = DEFAULT_OPTIONS.merge options
|
17
|
+
|
18
|
+
Combustion::Database::Reset.call if options[:database_reset]
|
19
|
+
Combustion::Database::LoadSchema.call if options[:load_schema]
|
20
|
+
Combustion::Database::Migrate.call if options[:database_migrate]
|
11
21
|
end
|
12
22
|
end
|
13
23
|
end
|
14
24
|
|
15
|
-
require
|
16
|
-
require
|
17
|
-
require
|
25
|
+
require "combustion/databases/base"
|
26
|
+
require "combustion/databases/firebird"
|
27
|
+
require "combustion/databases/mysql"
|
28
|
+
require "combustion/databases/oracle"
|
29
|
+
require "combustion/databases/postgresql"
|
30
|
+
require "combustion/databases/sql_server"
|
31
|
+
require "combustion/databases/sqlite"
|
18
32
|
|
19
|
-
require
|
20
|
-
require
|
21
|
-
require
|
22
|
-
require 'combustion/databases/oracle'
|
23
|
-
require 'combustion/databases/postgresql'
|
24
|
-
require 'combustion/databases/sql_server'
|
25
|
-
require 'combustion/databases/sqlite'
|
33
|
+
require "combustion/database/load_schema"
|
34
|
+
require "combustion/database/migrate"
|
35
|
+
require "combustion/database/reset"
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Combustion::Database::LoadSchema
|
2
4
|
UnknownSchemaFormat = Class.new StandardError
|
3
5
|
|
@@ -10,11 +12,9 @@ class Combustion::Database::LoadSchema
|
|
10
12
|
|
11
13
|
case schema_format
|
12
14
|
when :ruby
|
13
|
-
|
15
|
+
load_ruby_schema
|
14
16
|
when :sql
|
15
|
-
|
16
|
-
File.read(Rails.root.join('db', 'structure.sql'))
|
17
|
-
)
|
17
|
+
load_sql_schema
|
18
18
|
else
|
19
19
|
raise UnknownSchemaFormat, "Unknown schema format: #{schema_format}"
|
20
20
|
end
|
@@ -22,6 +22,16 @@ class Combustion::Database::LoadSchema
|
|
22
22
|
|
23
23
|
private
|
24
24
|
|
25
|
+
def load_ruby_schema
|
26
|
+
load Rails.root.join("db", "schema.rb")
|
27
|
+
end
|
28
|
+
|
29
|
+
def load_sql_schema
|
30
|
+
ActiveRecord::Base.connection.execute(
|
31
|
+
File.read(Rails.root.join("db", "structure.sql"))
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
25
35
|
def schema_format
|
26
36
|
Combustion.schema_format
|
27
37
|
end
|
@@ -1,10 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Combustion::Database::Migrate
|
2
4
|
def self.call
|
3
5
|
new.call
|
4
6
|
end
|
5
7
|
|
6
8
|
def call
|
7
|
-
if ActiveRecord::VERSION::STRING >=
|
9
|
+
if ActiveRecord::VERSION::STRING.to_f >= 5.2
|
10
|
+
migration_context.migrate
|
11
|
+
elsif ActiveRecord::VERSION::STRING.to_f >= 3.1
|
8
12
|
migrator.migrate paths, nil
|
9
13
|
else
|
10
14
|
paths.each { |path| migrator.migrate path, nil }
|
@@ -17,24 +21,37 @@ class Combustion::Database::Migrate
|
|
17
21
|
if migrator.respond_to?(:migrations_paths)
|
18
22
|
migrator.migrations_paths
|
19
23
|
else
|
20
|
-
Array(
|
24
|
+
Array("db/migrate/")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def engine_migration_paths
|
29
|
+
migration_paths = Rails.application.paths["db/migrate"].to_a
|
30
|
+
|
31
|
+
if engine_paths_exist_in?(migration_paths)
|
32
|
+
migration_paths
|
33
|
+
else
|
34
|
+
base_migration_paths + migration_paths
|
21
35
|
end
|
22
36
|
end
|
23
37
|
|
38
|
+
def engine_path
|
39
|
+
Rails.application.root.sub(::Combustion.path, "")
|
40
|
+
end
|
41
|
+
|
42
|
+
def engine_paths_exist_in?(paths)
|
43
|
+
paths.include?(engine_path.join("db/migrate").to_s)
|
44
|
+
end
|
45
|
+
|
46
|
+
def migration_context
|
47
|
+
ActiveRecord::MigrationContext.new paths
|
48
|
+
end
|
49
|
+
|
24
50
|
def migrator
|
25
51
|
@migrator ||= ActiveRecord::Migrator
|
26
52
|
end
|
27
53
|
|
28
54
|
def paths
|
29
|
-
|
30
|
-
migration_paths = Rails.application.paths['db/migrate'].to_a
|
31
|
-
|
32
|
-
if migration_paths.include?(engine_path.join('db/migrate').to_s)
|
33
|
-
paths = []
|
34
|
-
else
|
35
|
-
paths = base_migration_paths
|
36
|
-
end
|
37
|
-
|
38
|
-
(paths + migration_paths + [File.join(Rails.root, 'db/migrate')]).uniq
|
55
|
+
(engine_migration_paths + [File.join(Rails.root, "db/migrate")]).uniq
|
39
56
|
end
|
40
57
|
end
|
@@ -1,20 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Combustion::Database::Reset
|
2
4
|
UnsupportedDatabase = Class.new StandardError
|
3
5
|
|
6
|
+
OPERATOR_PATTERNS = {
|
7
|
+
Combustion::Databases::MySQL => [/mysql/],
|
8
|
+
Combustion::Databases::PostgreSQL => [/postgres/, /postgis/],
|
9
|
+
Combustion::Databases::SQLite => [/sqlite/],
|
10
|
+
Combustion::Databases::SQLServer => [/sqlserver/],
|
11
|
+
Combustion::Databases::Oracle => %w[ oci oracle ],
|
12
|
+
Combustion::Databases::Firebird => %w[ firebird ]
|
13
|
+
}.freeze
|
14
|
+
|
4
15
|
def self.call
|
5
16
|
new.call
|
6
17
|
end
|
7
18
|
|
8
19
|
def initialize
|
9
|
-
ActiveRecord::Base.configurations = YAML.
|
10
|
-
ERB.new(
|
20
|
+
ActiveRecord::Base.configurations = YAML.safe_load(
|
21
|
+
ERB.new(database_yaml).result, [], [], true
|
11
22
|
)
|
12
23
|
end
|
13
24
|
|
14
25
|
def call
|
15
|
-
ActiveRecord::Base.configurations.
|
16
|
-
adapter = configuration[
|
17
|
-
configuration[
|
26
|
+
ActiveRecord::Base.configurations.each_value do |configuration|
|
27
|
+
adapter = configuration["adapter"] ||
|
28
|
+
configuration["url"].split("://").first
|
18
29
|
|
19
30
|
operator_class(adapter).new(configuration).reset
|
20
31
|
end
|
@@ -22,23 +33,17 @@ class Combustion::Database::Reset
|
|
22
33
|
|
23
34
|
private
|
24
35
|
|
36
|
+
def database_yaml
|
37
|
+
File.read "#{Rails.root}/config/database.yml"
|
38
|
+
end
|
39
|
+
|
25
40
|
def operator_class(adapter)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
when /postgres/, /postgis/
|
30
|
-
Combustion::Databases::PostgreSQL
|
31
|
-
when /sqlite/
|
32
|
-
Combustion::Databases::SQLite
|
33
|
-
when /sqlserver/
|
34
|
-
Combustion::Databases::SQLServer
|
35
|
-
when 'oci', 'oracle'
|
36
|
-
Combustion::Databases::Oracle
|
37
|
-
when 'firebird'
|
38
|
-
Combustion::Databases::Firebird
|
39
|
-
else
|
40
|
-
raise UnsupportedDatabase,
|
41
|
-
"Unsupported database type: #{adapter}"
|
41
|
+
klass = nil
|
42
|
+
OPERATOR_PATTERNS.each do |operator, keys|
|
43
|
+
klass = operator if keys.any? { |key| adapter[key] }
|
42
44
|
end
|
45
|
+
return klass if klass
|
46
|
+
|
47
|
+
raise UnsupportedDatabase, "Unsupported database type: #{adapter}"
|
43
48
|
end
|
44
49
|
end
|
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Combustion::Databases::MySQL < Combustion::Databases::Base
|
2
|
-
ACCESS_DENIED_ERROR =
|
4
|
+
ACCESS_DENIED_ERROR = 10_145
|
3
5
|
|
4
6
|
def reset
|
5
|
-
establish_connection(configuration.merge(
|
7
|
+
establish_connection(configuration.merge("database" => nil))
|
6
8
|
|
7
9
|
super
|
8
10
|
end
|
@@ -10,34 +12,36 @@ class Combustion::Databases::MySQL < Combustion::Databases::Base
|
|
10
12
|
private
|
11
13
|
|
12
14
|
def charset
|
13
|
-
configuration[
|
15
|
+
configuration["charset"] || ENV["CHARSET"] || "utf8"
|
16
|
+
end
|
17
|
+
|
18
|
+
def charset_error
|
19
|
+
return "" unless config["charset"]
|
20
|
+
|
21
|
+
"(if you set the charset manually, make sure you have a matching collation)"
|
14
22
|
end
|
15
23
|
|
16
24
|
def collation
|
17
|
-
configuration[
|
25
|
+
configuration["collation"] || ENV["COLLATION"] || "utf8_unicode_ci"
|
18
26
|
end
|
19
27
|
|
20
28
|
def create
|
21
|
-
connection.create_database configuration[
|
29
|
+
connection.create_database configuration["database"], creation_options
|
22
30
|
establish_connection configuration
|
23
31
|
rescue error_class => error
|
24
|
-
|
25
|
-
create_as_root
|
26
|
-
else
|
27
|
-
$stderr.puts error.error
|
28
|
-
$stderr.puts "Couldn't create database for #{config.inspect}, charset: #{charset}, collation: #{collation}"
|
29
|
-
$stderr.puts "(if you set the charset manually, make sure you have a matching collation)" if config['charset']
|
30
|
-
end
|
32
|
+
rescue_create_from error
|
31
33
|
end
|
32
34
|
|
33
|
-
def create_as_root
|
34
|
-
print "#{sqlerr.error}. \nPlease provide the root password for your mysql installation\n>"
|
35
|
-
root_password = $stdin.gets.strip
|
35
|
+
def create_as_root(error)
|
36
36
|
establish_connection configuration.merge(
|
37
|
-
|
37
|
+
"database" => nil,
|
38
|
+
"username" => "root",
|
39
|
+
"password" => request_password(error)
|
38
40
|
)
|
39
|
-
|
41
|
+
|
42
|
+
connection.create_database config["database"], creation_options
|
40
43
|
connection.execute grant_statement
|
44
|
+
|
41
45
|
establish_connection configuration
|
42
46
|
end
|
43
47
|
|
@@ -46,24 +50,49 @@ class Combustion::Databases::MySQL < Combustion::Databases::Base
|
|
46
50
|
end
|
47
51
|
|
48
52
|
def drop
|
49
|
-
connection.drop_database configuration[
|
53
|
+
connection.drop_database configuration["database"]
|
50
54
|
end
|
51
55
|
|
52
56
|
def error_class
|
53
|
-
if configuration[
|
54
|
-
#FIXME After Jdbcmysql gives this class
|
55
|
-
require
|
56
|
-
|
57
|
+
if configuration["adapter"][/jdbc/]
|
58
|
+
# FIXME: After Jdbcmysql gives this class
|
59
|
+
require "active_record/railties/jdbcmysql_error"
|
60
|
+
ArJdbcMySQL::Error
|
61
|
+
elsif config["adapter"][/mysql2/] && defined?(Mysql2)
|
62
|
+
Mysql2::Error
|
57
63
|
else
|
58
|
-
|
64
|
+
Mysql::Error
|
59
65
|
end
|
60
66
|
end
|
61
67
|
|
62
68
|
def grant_statement
|
63
69
|
<<-SQL
|
64
|
-
GRANT ALL PRIVILEGES ON #{configuration[
|
65
|
-
TO '#{configuration[
|
66
|
-
IDENTIFIED BY '#{configuration[
|
70
|
+
GRANT ALL PRIVILEGES ON #{configuration["database"]}.*
|
71
|
+
TO '#{configuration["username"]}'@'localhost'
|
72
|
+
IDENTIFIED BY '#{configuration["password"]}' WITH GRANT OPTION;
|
67
73
|
SQL
|
68
74
|
end
|
75
|
+
|
76
|
+
def request_password(error)
|
77
|
+
print <<-TXT.strip
|
78
|
+
#{error.error}.
|
79
|
+
Please provide the root password for your mysql installation
|
80
|
+
>
|
81
|
+
TXT
|
82
|
+
|
83
|
+
$stdin.gets.strip
|
84
|
+
end
|
85
|
+
|
86
|
+
def rescue_create_from(error)
|
87
|
+
if error.errno == ACCESS_DENIED_ERROR
|
88
|
+
create_as_root(error)
|
89
|
+
return
|
90
|
+
end
|
91
|
+
|
92
|
+
$stderr.puts <<-TXT
|
93
|
+
#{error.error}
|
94
|
+
Couldn't create database for #{config.inspect}, charset: #{charset}, collation: #{collation}
|
95
|
+
#{charset_error}
|
96
|
+
TXT
|
97
|
+
end
|
69
98
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Combustion::Databases::PostgreSQL < Combustion::Databases::Base
|
2
4
|
def reset
|
3
5
|
base.clear_active_connections!
|
@@ -10,31 +12,30 @@ class Combustion::Databases::PostgreSQL < Combustion::Databases::Base
|
|
10
12
|
|
11
13
|
def create
|
12
14
|
connection.create_database(
|
13
|
-
configuration[
|
14
|
-
configuration.merge(
|
15
|
+
configuration["database"],
|
16
|
+
configuration.merge("encoding" => encoding)
|
15
17
|
)
|
16
|
-
|
17
|
-
|
18
|
-
$stderr.puts error, *(error.backtrace)
|
18
|
+
rescue StandardError => error
|
19
|
+
$stderr.puts error, *error.backtrace
|
19
20
|
$stderr.puts "Couldn't create database for #{configuration.inspect}"
|
20
21
|
end
|
21
22
|
|
22
23
|
def drop
|
23
|
-
connection.drop_database(configuration[
|
24
|
+
connection.drop_database(configuration["database"])
|
24
25
|
end
|
25
26
|
|
26
27
|
def encoding
|
27
|
-
configuration[
|
28
|
+
configuration["encoding"] || ENV["CHARSET"] || "utf8"
|
28
29
|
end
|
29
30
|
|
30
31
|
def postgres_configuration
|
31
32
|
configuration.merge(
|
32
|
-
|
33
|
-
|
33
|
+
"database" => "postgres",
|
34
|
+
"schema_search_path" => schema_search_path
|
34
35
|
)
|
35
36
|
end
|
36
37
|
|
37
38
|
def schema_search_path
|
38
|
-
configuration[
|
39
|
+
configuration["adapter"][/postgis/] ? "public, postgis" : "public"
|
39
40
|
end
|
40
41
|
end
|
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Combustion::Databases::SQLServer < Combustion::Databases::Base
|
2
4
|
def reset
|
3
|
-
establish_connection configuration.merge(
|
4
|
-
connection.recreate_database! configuration[
|
5
|
+
establish_connection configuration.merge("database" => "master")
|
6
|
+
connection.recreate_database! configuration["database"]
|
5
7
|
end
|
6
8
|
end
|
@@ -1,19 +1,21 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "fileutils"
|
4
|
+
require "pathname"
|
3
5
|
|
4
6
|
class Combustion::Databases::SQLite < Combustion::Databases::Base
|
5
7
|
private
|
6
8
|
|
7
9
|
def create
|
8
10
|
if exists?
|
9
|
-
$stderr.puts "#{config[
|
11
|
+
$stderr.puts "#{config["database"]} already exists"
|
10
12
|
return
|
11
13
|
end
|
12
14
|
|
13
15
|
establish_connection configuration
|
14
16
|
connection
|
15
|
-
rescue
|
16
|
-
$stderr.puts error, *
|
17
|
+
rescue StandardError => error
|
18
|
+
$stderr.puts error, *error.backtrace
|
17
19
|
$stderr.puts "Couldn't create database for #{configuration.inspect}"
|
18
20
|
end
|
19
21
|
|
@@ -30,6 +32,6 @@ class Combustion::Databases::SQLite < Combustion::Databases::Base
|
|
30
32
|
end
|
31
33
|
|
32
34
|
def path
|
33
|
-
@path ||= Pathname.new configuration[
|
35
|
+
@path ||= Pathname.new configuration["database"]
|
34
36
|
end
|
35
37
|
end
|
data/lib/combustion/generator.rb
CHANGED
@@ -1,29 +1,31 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "thor/group"
|
2
4
|
|
3
5
|
module Combustion
|
4
6
|
class Generator < Thor::Group
|
5
7
|
include Thor::Actions
|
6
8
|
|
7
9
|
def self.source_root
|
8
|
-
File.expand_path File.join(File.dirname(__FILE__),
|
10
|
+
File.expand_path File.join(File.dirname(__FILE__), "..", "..")
|
9
11
|
end
|
10
12
|
|
11
13
|
def create_directories
|
12
|
-
empty_directory
|
13
|
-
empty_directory
|
14
|
-
empty_directory
|
15
|
-
empty_directory
|
16
|
-
empty_directory
|
14
|
+
empty_directory "spec/internal"
|
15
|
+
empty_directory "spec/internal/config"
|
16
|
+
empty_directory "spec/internal/db"
|
17
|
+
empty_directory "spec/internal/log"
|
18
|
+
empty_directory "spec/internal/public"
|
17
19
|
end
|
18
20
|
|
19
21
|
def create_files
|
20
|
-
template
|
21
|
-
template
|
22
|
-
template
|
23
|
-
template
|
24
|
-
create_file
|
25
|
-
create_file
|
26
|
-
|
22
|
+
template "templates/routes.rb", "spec/internal/config/routes.rb"
|
23
|
+
template "templates/database.yml", "spec/internal/config/database.yml"
|
24
|
+
template "templates/schema.rb", "spec/internal/db/schema.rb"
|
25
|
+
template "templates/config.ru", "config.ru"
|
26
|
+
create_file "spec/internal/public/favicon.ico"
|
27
|
+
create_file "spec/internal/log/.gitignore" do
|
28
|
+
"*.log"
|
27
29
|
end
|
28
30
|
end
|
29
31
|
end
|
data/spec/database_spec.rb
CHANGED
@@ -1,28 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Combustion
|
2
4
|
describe Database do
|
3
5
|
before(:all) do
|
4
|
-
Dir.chdir(File.expand_path(
|
6
|
+
Dir.chdir(File.expand_path("../dummy", __FILE__)) do
|
5
7
|
Combustion.initialize! :active_record
|
6
8
|
end
|
7
9
|
end
|
8
10
|
|
9
|
-
it
|
10
|
-
expect(Model.connection.table_exists?(
|
11
|
-
expect(Model.connection.table_exists?(
|
11
|
+
it "creates dummy table from migration in base database" do
|
12
|
+
expect(Model.connection.table_exists?("dummy_table")).to eq true
|
13
|
+
expect(Model.connection.table_exists?("dummy_in_another_db")).to eq false
|
12
14
|
end
|
13
15
|
|
14
|
-
it
|
15
|
-
expect(ModelInAnotherDb.connection.table_exists?(
|
16
|
-
|
17
|
-
|
16
|
+
it "creates another dummy table from another database" do
|
17
|
+
expect(ModelInAnotherDb.connection.table_exists?("dummy_table")).
|
18
|
+
to eq false
|
19
|
+
expect(ModelInAnotherDb.connection.table_exists?("dummy_in_another_db")).
|
20
|
+
to eq true
|
18
21
|
end
|
19
22
|
|
20
|
-
it
|
21
|
-
expect(Model.connection_config[:database]).to match
|
23
|
+
it "returns test databse for model with default connection" do
|
24
|
+
expect(Model.connection_config[:database]).to match(/test/)
|
22
25
|
end
|
23
26
|
|
24
|
-
it
|
25
|
-
expect(ModelInAnotherDb.connection_config[:database]).
|
27
|
+
it "returns test_another for model with connection to second database" do
|
28
|
+
expect(ModelInAnotherDb.connection_config[:database]).
|
29
|
+
to match(/test_another/)
|
26
30
|
end
|
27
31
|
end
|
28
32
|
end
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
superclass = ActiveRecord::VERSION::MAJOR < 5 ?
|
2
4
|
ActiveRecord::Migration : ActiveRecord::Migration[4.2]
|
3
5
|
class CreateDummyTestTable < superclass
|
4
6
|
def change
|
5
|
-
create_table
|
7
|
+
create_table "dummy_table"
|
6
8
|
end
|
7
9
|
end
|
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
superclass = ActiveRecord::VERSION::MAJOR < 5 ?
|
2
4
|
ActiveRecord::Migration : ActiveRecord::Migration[4.2]
|
3
5
|
class CreateDummyTestTableInAnotherDb < superclass
|
4
6
|
def change
|
5
|
-
create_table
|
7
|
+
create_table "dummy_in_another_db"
|
6
8
|
end
|
7
9
|
|
8
10
|
def connection
|
data/spec/dummy/lib/engine.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Dummy
|
2
4
|
class Engine < ::Rails::Engine
|
3
|
-
initializer :dummy, before
|
5
|
+
initializer :dummy, :before => :load_init_rb do |app|
|
4
6
|
app.config.paths["db/migrate"].concat(config.paths["db/migrate"].expanded)
|
5
7
|
end
|
6
8
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "combustion"
|
4
5
|
|
5
6
|
if Rails::VERSION::STRING.to_f < 4.1
|
6
|
-
require
|
7
|
-
require
|
7
|
+
require "active_record"
|
8
|
+
require "active_record/connection_adapters/mysql2_adapter"
|
8
9
|
|
9
10
|
class ActiveRecord::ConnectionAdapters::Mysql2Adapter
|
10
11
|
NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
|
data/templates/config.ru
CHANGED
data/templates/routes.rb
CHANGED
data/templates/schema.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: combustion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pat Allan
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rubocop
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 0.50.0
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 0.50.0
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: sqlite3
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,6 +160,7 @@ extra_rdoc_files: []
|
|
146
160
|
files:
|
147
161
|
- ".gitignore"
|
148
162
|
- ".rspec"
|
163
|
+
- ".rubocop.yml"
|
149
164
|
- ".travis.yml"
|
150
165
|
- Appraisals
|
151
166
|
- Gemfile
|
@@ -153,7 +168,6 @@ files:
|
|
153
168
|
- LICENCE
|
154
169
|
- README.md
|
155
170
|
- Rakefile
|
156
|
-
- bin/literals
|
157
171
|
- combustion.gemspec
|
158
172
|
- exe/combust
|
159
173
|
- gemfiles/rails_3.1.gemfile
|
@@ -163,9 +177,13 @@ files:
|
|
163
177
|
- gemfiles/rails_4.2.gemfile
|
164
178
|
- gemfiles/rails_5.0.gemfile
|
165
179
|
- gemfiles/rails_5.1.gemfile
|
180
|
+
- gemfiles/rails_5.2.gemfile
|
166
181
|
- gemfiles/rails_5_0.gemfile
|
167
182
|
- lib/combustion.rb
|
168
183
|
- lib/combustion/application.rb
|
184
|
+
- lib/combustion/configurations/action_controller.rb
|
185
|
+
- lib/combustion/configurations/action_mailer.rb
|
186
|
+
- lib/combustion/configurations/active_record.rb
|
169
187
|
- lib/combustion/database.rb
|
170
188
|
- lib/combustion/database/load_schema.rb
|
171
189
|
- lib/combustion/database/migrate.rb
|
@@ -213,7 +231,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
213
231
|
version: '0'
|
214
232
|
requirements: []
|
215
233
|
rubyforge_project: combustion
|
216
|
-
rubygems_version: 2.
|
234
|
+
rubygems_version: 2.7.3
|
217
235
|
signing_key:
|
218
236
|
specification_version: 4
|
219
237
|
summary: Elegant Rails Engine Testing
|
data/bin/literals
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
if (ruby -e "exit RUBY_VERSION.to_f >= 2.4")
|
2
|
-
then
|
3
|
-
echo "Automatic frozen string literals are supported"
|
4
|
-
gem install pragmater -v 4.0.0
|
5
|
-
pragmater --add lib --comments "# frozen_string_literal: true" --whitelist "**/*.rb"
|
6
|
-
pragmater --add spec --comments "# frozen_string_literal: true" --whitelist "**/*.rb"
|
7
|
-
else
|
8
|
-
echo "Automatic frozen string literals are not supported."
|
9
|
-
fi
|