bazelruby / rules_ruby

Formerly canonical rules for ruby, that are about 2-3 years behind current Bazel. If they work for you great, but if not — please try the new rules ruby by Alex Radionov: https://github.com/bazel-contrib/rules_ruby
Apache License 2.0
99 stars 37 forks source link

Add `includes` option to `ruby_bundle` rule for per-gem load path customization #102

Closed mmizutani closed 3 years ago

mmizutani commented 3 years ago

This PR fixes the gem registration logics to load all of the paths specified in the require_paths property of gemspecs

# https://github.com/grpc/grpc/blob/master/grpc.gemspec
Gem::Specification.new do |s|
  s.name = 'grpc'
  s.require_paths = %w( src/ruby/lib src/ruby/bin src/ruby/pb )
  ...
end

instead of loading only the standard, hardcoded path ["lib"].

Also, this PR extends ruby_bundle rule to also accept includes option, which allows us to specify additional library load paths not listed in the gemspecs' require_paths for specific rubygems like this:

ruby_bundle(
    name = "bundle",
    # Specify additional paths to be loaded from the gems at runtime, if any.
    includes = {
        "grpc": ["etc"],
    },
    gemfile = "//:Gemfile",
    gemfile_lock = "//:Gemfile.lock",
)

With both includes and excludes per-gem options at hand, users of ruby_bundle rule have more granular control over gem load paths, possibly addressing issues #85 , #86 , #97.

mmizutani commented 3 years ago

Thank you for updating the CI settings. I will look into the errors: https://app.circleci.com/pipelines/github/bazelruby/rules_ruby/307/workflows/bdd3ad88-e478-4e37-8029-b16e3ef1b38e/jobs/1073

kigster commented 3 years ago

@mmizutani Keep in mind that ruby version went up to 3.0.1 across the board. Perhaps you might want to update it as well, so that on CI we don't need to build a 2.7 interpreter. The 3.0.1 is pulled with the Docker image.

kigster commented 3 years ago

This, once ready, will be the 0.5.1 release.

kigster commented 3 years ago

Let me know if you'd like to pair on figuring out the broken build issues. I am in San Francisco time zone.

mmizutani commented 3 years ago

The tests have now been fixed. Thank you for your advice.

kigster commented 3 years ago

Amazing!