-
Notifications
You must be signed in to change notification settings - Fork 32
Description
Currently when running a ruby_bundle without the gemfile_lock attribute results in the following error
ERROR: An error occurred during the fetch of repository 'vagrant_bundle':
Traceback (most recent call last):
File "/private/var/tmp/_bazel_maarten/8c4bfcd606c4d7b95cf418885251b08c/external/bazelruby_rules_ruby/ruby/private/bundle/def.bzl", line 198, column 28, in _ruby_bundle_impl
result = bundle_install(runtime_ctx, result)
File "/private/var/tmp/_bazel_maarten/8c4bfcd606c4d7b95cf418885251b08c/external/bazelruby_rules_ruby/ruby/private/bundle/def.bzl", line 138, column 13, in bundle_install
fail("bundle install failed: %s%s" % (result.stdout, result.stderr))
Error in fail: bundle install failed: The deployment setting requires a Gemfile.lock. Please make sure you have
checked your Gemfile.lock into version control before deploying
The documentation (https://github.com/bazelruby/rules_ruby#54-ruby_bundle) suggests that it's possible to run ruby_bundle without passing the gemfile_lock attribute. This is backed-up by the conditional in the code which checks for the presence of the gemfile_lock attribute https://github.com/bazelruby/rules_ruby/blob/master/ruby/private/bundle/def.bzl#L125-L126.
The problem is that the set_bundler_config hardcodes the deployment and frozen settings to true (https://github.com/bazelruby/rules_ruby/blob/master/ruby/private/bundle/def.bzl#L56-L58) which enforces that any bundle install command requires a Gemfile.lock file.
Disabling these settings as follows seems to help in the case of no Gemfile.lock:
bundler_config = {
# "deployment": "false",
"standalone": "true",
"force": "false",
"redownload": "false",
# "frozen": "true",
"path": BUNDLE_PATH,
"jobs": "20",
"shebang": runtime_ctx.interpreter,
}