Skip to content

Ability to run ruby_bundle without gemfile_lock attribute #129

@mvgijssel

Description

@mvgijssel

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,
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions