railties 5.0.0.beta1.1 → 5.0.0.beta2
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/CHANGELOG.md +29 -6
- data/MIT-LICENSE +2 -2
- data/RDOC_MAIN.rdoc +1 -1
- data/lib/rails/application/default_middleware_stack.rb +1 -1
- data/lib/rails/application/finisher.rb +1 -1
- data/lib/rails/code_statistics.rb +1 -1
- data/lib/rails/commands/runner.rb +7 -1
- data/lib/rails/commands/server.rb +7 -3
- data/lib/rails/engine/commands.rb +3 -32
- data/lib/rails/engine/commands_tasks.rb +116 -0
- data/lib/rails/gem_version.rb +1 -1
- data/lib/rails/generators/actions.rb +2 -2
- data/lib/rails/generators/actions/create_migration.rb +1 -1
- data/lib/rails/generators/app_base.rb +22 -1
- data/lib/rails/generators/generated_attribute.rb +3 -2
- data/lib/rails/generators/named_base.rb +4 -0
- data/lib/rails/generators/rails/app/app_generator.rb +18 -2
- data/lib/rails/generators/rails/app/templates/Gemfile +0 -3
- data/lib/rails/generators/rails/app/templates/app/assets/javascripts/cable.coffee +1 -1
- data/lib/rails/generators/rails/app/templates/app/channels/application_cable/channel.rb +1 -1
- data/lib/rails/generators/rails/app/templates/app/channels/application_cable/connection.rb +1 -1
- data/lib/rails/generators/rails/app/templates/config.ru.tt +2 -3
- data/lib/rails/generators/rails/app/templates/config/cable.yml +10 -0
- data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/initializers/active_record_belongs_to_required_by_default.rb +3 -2
- data/lib/rails/generators/rails/app/templates/config/initializers/callback_terminator.rb +3 -2
- data/lib/rails/generators/rails/app/templates/config/initializers/cookies_serializer.rb +2 -1
- data/lib/rails/generators/rails/app/templates/config/initializers/per_form_csrf_tokens.rb +4 -0
- data/lib/rails/generators/rails/app/templates/config/puma.rb +44 -0
- data/lib/rails/generators/rails/app/templates/config/secrets.yml +1 -1
- data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +1 -1
- data/lib/rails/generators/rails/model/USAGE +4 -4
- data/lib/rails/generators/rails/plugin/plugin_generator.rb +7 -1
- data/lib/rails/generators/rails/plugin/templates/README.md +26 -1
- data/lib/rails/generators/rails/plugin/templates/app/mailers/%namespaced_name%/application_mailer.rb.tt +7 -0
- data/lib/rails/generators/rails/plugin/templates/app/models/{application_record.rb.tt → %namespaced_name%/application_record.rb.tt} +0 -0
- data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb +1 -1
- data/lib/rails/generators/rails/scaffold/USAGE +1 -1
- data/lib/rails/generators/test_unit/controller/templates/functional_test.rb +1 -1
- data/lib/rails/generators/test_unit/model/templates/fixtures.yml +2 -2
- data/lib/rails/rack/logger.rb +0 -6
- data/lib/rails/tasks/engine.rake +2 -2
- data/lib/rails/tasks/log.rake +19 -6
- data/lib/rails/tasks/routes.rake +30 -2
- data/lib/rails/templates/rails/welcome/index.html.erb +61 -265
- data/lib/rails/test_unit/line_filtering.rb +70 -0
- data/lib/rails/test_unit/minitest_plugin.rb +12 -9
- data/lib/rails/test_unit/railtie.rb +6 -0
- data/lib/rails/test_unit/reporter.rb +37 -1
- data/lib/rails/test_unit/test_requirer.rb +1 -1
- data/lib/rails/test_unit/testing.rake +6 -1
- metadata +17 -13
- data/lib/rails/generators/rails/app/templates/config/redis/cable.yml +0 -9
- data/lib/rails/generators/rails/plugin/templates/app/mailers/.empty_directory +0 -0
- data/lib/rails/generators/rails/plugin/templates/app/models/.empty_directory +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83e9a8d14879b7cd28fc9fd57f76b5e2f280c609
|
4
|
+
data.tar.gz: ac950ac53f6b98b0797920ed8d93fd96e875b74e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99c2414aba749e7dd0bb5fb7fb473387ded69a813dae0a40e4d4b2925318575bfed83ae59b46b28234590a7606aa5e82ef1237d97b9435da4504be22c9712e53
|
7
|
+
data.tar.gz: 0b1c83b2b97aa12caf646777cc37313eb25f46111b9359b4b648507698840678e1f2a12af058fd6ea288a8c35e267adaa5718e6529922340d581d7766bc67b40
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,30 @@
|
|
1
|
-
## Rails 5.0.0.
|
1
|
+
## Rails 5.0.0.beta2 (February 01, 2016) ##
|
2
|
+
|
3
|
+
* Add `after_bundle` callbacks in Rails plugin templates. Useful for allowing
|
4
|
+
templates to perform actions that are dependent upon `bundle install`.
|
5
|
+
|
6
|
+
*Ryan Manuel*
|
7
|
+
|
8
|
+
* Bring back `TEST=` env for `rake test` task.
|
9
|
+
|
10
|
+
*Yves Senn*
|
11
|
+
|
12
|
+
* Specify log file names or all logs to clear `rake log:clear`
|
2
13
|
|
3
|
-
|
14
|
+
Specify which logs to clear when using the `rake log:clear` task, e.g. `rake log:clear LOGS=test,staging`
|
4
15
|
|
16
|
+
Clear all logs from log/*.log e.g. `rake log:clear LOGS=all`
|
17
|
+
|
18
|
+
By default `rake log:clear` clears standard environment log files i.e. 'development,test,production'
|
19
|
+
|
20
|
+
*Pramod Shinde*
|
21
|
+
|
22
|
+
* Fix using `add_source` with a block after using `gem` in a custom generator.
|
23
|
+
|
24
|
+
*Will Fisher*
|
25
|
+
|
26
|
+
|
27
|
+
## Rails 5.0.0.beta1 (December 18, 2015) ##
|
5
28
|
|
6
29
|
* Newly generated plugins get a `README.md` in Markdown.
|
7
30
|
|
@@ -200,7 +223,7 @@
|
|
200
223
|
* Fix STATS_DIRECTORIES already defined warning when running rake from within
|
201
224
|
the top level directory of an engine that has a test app.
|
202
225
|
|
203
|
-
Fixes #20510
|
226
|
+
Fixes #20510.
|
204
227
|
|
205
228
|
*Ersin Akinci*
|
206
229
|
|
@@ -248,13 +271,13 @@
|
|
248
271
|
middleware for API apps & generators generates the right files,
|
249
272
|
folders and configurations.
|
250
273
|
|
251
|
-
*Santiago Pastorino
|
274
|
+
*Santiago Pastorino*, *Jorge Bejar*
|
252
275
|
|
253
276
|
* Make generated scaffold functional tests work inside engines.
|
254
277
|
|
255
278
|
*Yuji Yaginuma*
|
256
279
|
|
257
|
-
*
|
280
|
+
* Generate a `.keep` file in the `tmp` folder by default as many scripts
|
258
281
|
assume the existence of this folder and most would fail if it is absent.
|
259
282
|
|
260
283
|
See #20299.
|
@@ -320,7 +343,7 @@
|
|
320
343
|
* Created rake restart task. Restarts your Rails app by touching the
|
321
344
|
`tmp/restart.txt`.
|
322
345
|
|
323
|
-
|
346
|
+
See #18876.
|
324
347
|
|
325
348
|
*Hyonjee Joo*
|
326
349
|
|
data/MIT-LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2004-
|
1
|
+
Copyright (c) 2004-2016 David Heinemeier Hansson
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining
|
4
4
|
a copy of this software and associated documentation files (the
|
@@ -17,4 +17,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
17
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
18
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
19
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/RDOC_MAIN.rdoc
CHANGED
@@ -57,7 +57,7 @@ can read more about Action Pack in its {README}[link:files/actionpack/README_rdo
|
|
57
57
|
|
58
58
|
* The \README file created within your application.
|
59
59
|
* {Getting Started with \Rails}[http://guides.rubyonrails.org/getting_started.html].
|
60
|
-
* {Ruby on \Rails Tutorial}[http://
|
60
|
+
* {Ruby on \Rails Tutorial}[http://www.railstutorial.org/book].
|
61
61
|
* {Ruby on \Rails Guides}[http://guides.rubyonrails.org].
|
62
62
|
* {The API Documentation}[http://api.rubyonrails.org].
|
63
63
|
|
@@ -68,7 +68,7 @@ module Rails
|
|
68
68
|
middleware.use ::ActionDispatch::Cookies unless config.api_only
|
69
69
|
|
70
70
|
if !config.api_only && config.session_store
|
71
|
-
if config.force_ssl && !config.session_options.key?(:secure)
|
71
|
+
if config.force_ssl && config.ssl_options.fetch(:secure_cookies, true) && !config.session_options.key?(:secure)
|
72
72
|
config.session_options[:secure] = true
|
73
73
|
end
|
74
74
|
middleware.use config.session_store, config.session_options
|
@@ -86,7 +86,7 @@ module Rails
|
|
86
86
|
# added in the hook are taken into account.
|
87
87
|
initializer :set_clear_dependencies_hook, group: :all do
|
88
88
|
callback = lambda do
|
89
|
-
ActiveSupport::Dependencies.interlock.
|
89
|
+
ActiveSupport::Dependencies.interlock.unloading do
|
90
90
|
ActiveSupport::DescendantsTracker.clear
|
91
91
|
ActiveSupport::Dependencies.clear
|
92
92
|
end
|
@@ -33,7 +33,7 @@ class CodeStatistics #:nodoc:
|
|
33
33
|
Hash[@pairs.map{|pair| [pair.first, calculate_directory_statistics(pair.last)]}]
|
34
34
|
end
|
35
35
|
|
36
|
-
def calculate_directory_statistics(directory, pattern =
|
36
|
+
def calculate_directory_statistics(directory, pattern = /^(?!\.).*?\.(rb|js|coffee|rake)$/)
|
37
37
|
stats = CodeStatisticsCalculator.new
|
38
38
|
|
39
39
|
Dir.foreach(directory) do |file_name|
|
@@ -58,5 +58,11 @@ elsif File.exist?(code_or_file)
|
|
58
58
|
$0 = code_or_file
|
59
59
|
Kernel.load code_or_file
|
60
60
|
else
|
61
|
-
|
61
|
+
begin
|
62
|
+
eval(code_or_file, binding, __FILE__, __LINE__)
|
63
|
+
rescue SyntaxError,NameError => err
|
64
|
+
$stderr.puts "Please specify a valid ruby command or the path of a script to run."
|
65
|
+
$stderr.puts "Run '#{$0} -h' for help."
|
66
|
+
exit 1
|
67
|
+
end
|
62
68
|
end
|
@@ -6,6 +6,8 @@ require 'rails'
|
|
6
6
|
module Rails
|
7
7
|
class Server < ::Rack::Server
|
8
8
|
class Options
|
9
|
+
DEFAULT_PID_PATH = File.expand_path("tmp/pids/server.pid").freeze
|
10
|
+
|
9
11
|
def parse!(args)
|
10
12
|
args, options = args.dup, {}
|
11
13
|
|
@@ -91,7 +93,7 @@ module Rails
|
|
91
93
|
environment: (ENV['RAILS_ENV'] || ENV['RACK_ENV'] || "development").dup,
|
92
94
|
daemonize: false,
|
93
95
|
caching: false,
|
94
|
-
pid:
|
96
|
+
pid: Options::DEFAULT_PID_PATH
|
95
97
|
})
|
96
98
|
end
|
97
99
|
|
@@ -133,11 +135,13 @@ module Rails
|
|
133
135
|
def log_to_stdout
|
134
136
|
wrapped_app # touch the app so the logger is set up
|
135
137
|
|
136
|
-
console = ActiveSupport::Logger.new(
|
138
|
+
console = ActiveSupport::Logger.new(STDOUT)
|
137
139
|
console.formatter = Rails.logger.formatter
|
138
140
|
console.level = Rails.logger.level
|
139
141
|
|
140
|
-
|
142
|
+
unless ActiveSupport::Logger.logger_outputs_to?(Rails.logger, STDOUT)
|
143
|
+
Rails.logger.extend(ActiveSupport::Logger.broadcast(console))
|
144
|
+
end
|
141
145
|
end
|
142
146
|
end
|
143
147
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'rails/engine/commands_tasks'
|
2
|
+
|
1
3
|
ARGV << '--help' if ARGV.empty?
|
2
4
|
|
3
5
|
aliases = {
|
@@ -9,35 +11,4 @@ aliases = {
|
|
9
11
|
command = ARGV.shift
|
10
12
|
command = aliases[command] || command
|
11
13
|
|
12
|
-
|
13
|
-
engine = ::Rails::Engine.find(ENGINE_ROOT)
|
14
|
-
|
15
|
-
case command
|
16
|
-
when 'generate', 'destroy', 'test'
|
17
|
-
require 'rails/generators'
|
18
|
-
Rails::Generators.namespace = engine.railtie_namespace
|
19
|
-
engine.load_generators
|
20
|
-
require "rails/commands/#{command}"
|
21
|
-
|
22
|
-
when '--version', '-v'
|
23
|
-
ARGV.unshift '--version'
|
24
|
-
require 'rails/commands/application'
|
25
|
-
|
26
|
-
else
|
27
|
-
puts "Error: Command not recognized" unless %w(-h --help).include?(command)
|
28
|
-
puts <<-EOT
|
29
|
-
Usage: rails COMMAND [ARGS]
|
30
|
-
|
31
|
-
The common Rails commands available for engines are:
|
32
|
-
generate Generate new code (short-cut alias: "g")
|
33
|
-
destroy Undo code generated with "generate" (short-cut alias: "d")
|
34
|
-
test Run tests (short-cut alias: "t")
|
35
|
-
|
36
|
-
All commands can be run with -h for more information.
|
37
|
-
|
38
|
-
If you want to run any commands that need to be run in context
|
39
|
-
of the application, like `rails server` or `rails console`,
|
40
|
-
you should do it from application's directory (typically test/dummy).
|
41
|
-
EOT
|
42
|
-
exit(1)
|
43
|
-
end
|
14
|
+
Rails::Engine::CommandsTasks.new(ARGV).run_command!(command)
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require 'rails/commands/rake_proxy'
|
2
|
+
|
3
|
+
module Rails
|
4
|
+
class Engine
|
5
|
+
class CommandsTasks # :nodoc:
|
6
|
+
include Rails::RakeProxy
|
7
|
+
|
8
|
+
attr_reader :argv
|
9
|
+
|
10
|
+
HELP_MESSAGE = <<-EOT
|
11
|
+
Usage: rails COMMAND [ARGS]
|
12
|
+
|
13
|
+
The common Rails commands available for engines are:
|
14
|
+
generate Generate new code (short-cut alias: "g")
|
15
|
+
destroy Undo code generated with "generate" (short-cut alias: "d")
|
16
|
+
test Run tests (short-cut alias: "t")
|
17
|
+
|
18
|
+
All commands can be run with -h for more information.
|
19
|
+
|
20
|
+
If you want to run any commands that need to be run in context
|
21
|
+
of the application, like `rails server` or `rails console`,
|
22
|
+
you should do it from application's directory (typically test/dummy).
|
23
|
+
|
24
|
+
In addition to those commands, there are:
|
25
|
+
EOT
|
26
|
+
|
27
|
+
COMMAND_WHITELIST = %w(generate destroy version help test)
|
28
|
+
|
29
|
+
def initialize(argv)
|
30
|
+
@argv = argv
|
31
|
+
end
|
32
|
+
|
33
|
+
def run_command!(command)
|
34
|
+
command = parse_command(command)
|
35
|
+
|
36
|
+
if COMMAND_WHITELIST.include?(command)
|
37
|
+
send(command)
|
38
|
+
else
|
39
|
+
run_rake_task(command)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def generate
|
44
|
+
generate_or_destroy(:generate)
|
45
|
+
end
|
46
|
+
|
47
|
+
def destroy
|
48
|
+
generate_or_destroy(:destroy)
|
49
|
+
end
|
50
|
+
|
51
|
+
def test
|
52
|
+
require_command!("test")
|
53
|
+
end
|
54
|
+
|
55
|
+
def version
|
56
|
+
argv.unshift '--version'
|
57
|
+
require_command!("application")
|
58
|
+
end
|
59
|
+
|
60
|
+
def help
|
61
|
+
write_help_message
|
62
|
+
write_commands(formatted_rake_tasks)
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
def require_command!(command)
|
68
|
+
require "rails/commands/#{command}"
|
69
|
+
end
|
70
|
+
|
71
|
+
def generate_or_destroy(command)
|
72
|
+
load_generators
|
73
|
+
require_command!(command)
|
74
|
+
end
|
75
|
+
|
76
|
+
def load_generators
|
77
|
+
require 'rails/generators'
|
78
|
+
require ENGINE_PATH
|
79
|
+
|
80
|
+
engine = ::Rails::Engine.find(ENGINE_ROOT)
|
81
|
+
Rails::Generators.namespace = engine.railtie_namespace
|
82
|
+
engine.load_generators
|
83
|
+
end
|
84
|
+
|
85
|
+
def write_help_message
|
86
|
+
puts HELP_MESSAGE
|
87
|
+
end
|
88
|
+
|
89
|
+
def write_commands(commands)
|
90
|
+
width = commands.map { |name, _| name.size }.max || 10
|
91
|
+
commands.each { |command| printf(" %-#{width}s %s\n", *command) }
|
92
|
+
end
|
93
|
+
|
94
|
+
def parse_command(command)
|
95
|
+
case command
|
96
|
+
when '--version', '-v'
|
97
|
+
'version'
|
98
|
+
when '--help', '-h'
|
99
|
+
'help'
|
100
|
+
else
|
101
|
+
command
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def rake_tasks
|
106
|
+
return @rake_tasks if defined?(@rake_tasks)
|
107
|
+
|
108
|
+
load_generators
|
109
|
+
Rake::TaskManager.record_task_metadata = true
|
110
|
+
Rake.application.init('rails')
|
111
|
+
Rake.application.load_rakefile
|
112
|
+
@rake_tasks = Rake.application.tasks.select(&:comment)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
data/lib/rails/gem_version.rb
CHANGED
@@ -20,7 +20,7 @@ module Rails
|
|
20
20
|
|
21
21
|
# Set the message to be shown in logs. Uses the git repo if one is given,
|
22
22
|
# otherwise use name (version).
|
23
|
-
parts, message = [ quote(name) ], name
|
23
|
+
parts, message = [ quote(name) ], name.dup
|
24
24
|
if version ||= options.delete(:version)
|
25
25
|
parts << quote(version)
|
26
26
|
message << " (#{version})"
|
@@ -75,7 +75,7 @@ module Rails
|
|
75
75
|
|
76
76
|
in_root do
|
77
77
|
if block
|
78
|
-
append_file "Gemfile", "
|
78
|
+
append_file "Gemfile", "\nsource #{quote(source)} do", force: true
|
79
79
|
@in_group = true
|
80
80
|
instance_eval(&block)
|
81
81
|
@in_group = false
|
@@ -51,6 +51,9 @@ module Rails
|
|
51
51
|
class_option :skip_active_record, type: :boolean, aliases: '-O', default: false,
|
52
52
|
desc: 'Skip Active Record files'
|
53
53
|
|
54
|
+
class_option :skip_puma, type: :boolean, aliases: '-P', default: false,
|
55
|
+
desc: 'Skip Puma related files'
|
56
|
+
|
54
57
|
class_option :skip_action_cable, type: :boolean, aliases: '-C', default: false,
|
55
58
|
desc: 'Skip Action Cable files'
|
56
59
|
|
@@ -75,7 +78,7 @@ module Rails
|
|
75
78
|
class_option :edge, type: :boolean, default: false,
|
76
79
|
desc: "Setup the #{name} with Gemfile pointing to Rails repository"
|
77
80
|
|
78
|
-
class_option :rc, type: :string, default:
|
81
|
+
class_option :rc, type: :string, default: nil,
|
79
82
|
desc: "Path to file containing extra configuration options for rails command"
|
80
83
|
|
81
84
|
class_option :no_rc, type: :boolean, default: false,
|
@@ -113,10 +116,12 @@ module Rails
|
|
113
116
|
def gemfile_entries
|
114
117
|
[rails_gemfile_entry,
|
115
118
|
database_gemfile_entry,
|
119
|
+
webserver_gemfile_entry,
|
116
120
|
assets_gemfile_entry,
|
117
121
|
javascript_gemfile_entry,
|
118
122
|
jbuilder_gemfile_entry,
|
119
123
|
psych_gemfile_entry,
|
124
|
+
cable_gemfile_entry,
|
120
125
|
@extra_entries].flatten.find_all(&@gem_filter)
|
121
126
|
end
|
122
127
|
|
@@ -170,6 +175,12 @@ module Rails
|
|
170
175
|
"Use #{options[:database]} as the database for Active Record"
|
171
176
|
end
|
172
177
|
|
178
|
+
def webserver_gemfile_entry
|
179
|
+
return [] if options[:skip_puma]
|
180
|
+
comment = 'Use Puma as the app server'
|
181
|
+
GemfileEntry.new('puma', nil, comment)
|
182
|
+
end
|
183
|
+
|
173
184
|
def include_all_railties?
|
174
185
|
options.values_at(:skip_active_record, :skip_action_mailer, :skip_test, :skip_sprockets, :skip_action_cable).none?
|
175
186
|
end
|
@@ -281,6 +292,8 @@ module Rails
|
|
281
292
|
return [] if options[:skip_sprockets]
|
282
293
|
|
283
294
|
gems = []
|
295
|
+
gems << GemfileEntry.version('sass-rails', '~> 5.0',
|
296
|
+
'Use SCSS for stylesheets')
|
284
297
|
|
285
298
|
gems << GemfileEntry.version('uglifier',
|
286
299
|
'>= 1.3.0',
|
@@ -337,6 +350,14 @@ module Rails
|
|
337
350
|
GemfileEntry.new('psych', '~> 2.0', comment, platforms: :rbx)
|
338
351
|
end
|
339
352
|
|
353
|
+
def cable_gemfile_entry
|
354
|
+
return [] if options[:skip_action_cable]
|
355
|
+
comment = 'Action Cable dependencies for the Redis adapter'
|
356
|
+
gems = []
|
357
|
+
gems << GemfileEntry.new("redis", '~> 3.0', comment)
|
358
|
+
gems
|
359
|
+
end
|
360
|
+
|
340
361
|
def bundle_command(command)
|
341
362
|
say_status :run, "bundle #{command}"
|
342
363
|
|