Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Install binstubs by default

  • Loading branch information...
commit f34c27a452418d8aa17f92bb0fd7ae97b5f7e252 1 parent cba0588
@wycats wycats authored
View
2  railties/lib/rails/generators/app_base.rb
@@ -261,7 +261,7 @@ def bundle_command(command)
end
def run_bundle
- bundle_command('install') unless options[:skip_gemfile] || options[:skip_bundle] || options[:pretend]
+ bundle_command('install --binstubs') unless options[:skip_gemfile] || options[:skip_bundle] || options[:pretend]
end
def empty_directory_with_keep_file(destination, config = {})
View
6 railties/test/generators/shared_generator_tests.rb
@@ -27,7 +27,7 @@ def test_skeleton_is_created
end
def test_generation_runs_bundle_install
- generator([destination_root]).expects(:bundle_command).with('install').once
+ generator([destination_root]).expects(:bundle_command).with('install --binstubs').once
quietly { generator.invoke_all }
end
@@ -101,14 +101,14 @@ def test_template_is_executed_when_supplied_an_https_path
end
def test_dev_option
- generator([destination_root], dev: true).expects(:bundle_command).with('install').once
+ generator([destination_root], dev: true).expects(:bundle_command).with('install --binstubs').once
quietly { generator.invoke_all }
rails_path = File.expand_path('../../..', Rails.root)
assert_file 'Gemfile', /^gem\s+["']rails["'],\s+path:\s+["']#{Regexp.escape(rails_path)}["']$/
end
def test_edge_option
- generator([destination_root], edge: true).expects(:bundle_command).with('install').once
+ generator([destination_root], edge: true).expects(:bundle_command).with('install --binstubs').once
quietly { generator.invoke_all }
assert_file 'Gemfile', %r{^gem\s+["']rails["'],\s+github:\s+["']#{Regexp.escape("rails/rails")}["']$}
end

11 comments on commit f34c27a

@steveklabnik
Collaborator

:+1:

@bensie

Have you considered making this the default in Bundler instead of the initial Rails app generator? This may cause unexpected behavior for those new to Rails - where they have binstubs initially but subsequent calls to bundle install/update doesn't refresh them or add new ones.

@indirect

@bensie that's not how bundler works. The flag passed to install will be remembered, and later calls to install or update will update the binstubs.

@wycats
Collaborator

@bensie we can't make it the default in bundler because some project (especially gems) have their own bin directories, which would be clobbered.

@bensie

@indirect @wycats Makes sense. Remembering the flag passed to install sounds great. Is that part a Rails or Bundler thing?

@guilleiguaran

@bensie is part of Bundler.

Also we can update docs to tell to developers that they may want to use bundle install --binstubs instead of bundle install the first time they checkout a Rails project from VCS.

@dhh
Owner

Most projects should just checkin the bin stubs.

@bensie

@dhh Commit 35c554f encourages the opposite.

@wycats
Collaborator

The problem with checking in binstubs in general is that the shebang line is system specific (special for windows, rbenv) so your team would need to have a very consistent setup to avoid problems.

@dhh
Owner
@dhh
Owner
Please sign in to comment.
Something went wrong with that request. Please try again.