特立尼达最简单的方式是依赖于jruby-rack的替代版本



当前特立尼达gem依赖于jruby-rack 1.1.0,这在我的开发日志中显示了一些错误

/Users/bijan/.rvm/gems/jruby-1.7.3/gems/rack-1.4.5/lib/rack/utils.rb:399 warning: multiple values for a block parameter (2 for 1)

这个问题显然已经在当前的ruby-rack(1.2)主分支中解决了,我想让特立尼达依赖于这个问题。

是否有办法从我的Gemfile中做到这一点?或者还有一个更简单的解决方案,而不是分叉Trinidad gem并指定一个不同版本的jruby-rack(并希望它能够工作,因为它可能无法工作)。

TL;您需要构建一个或两个项目,或者通过发布从jruby-rack团队获得一些帮助。查看底部的构建步骤。


当前特立尼达版本(1.4.4和1.4.5B1预发行版)使用jruby-rack和乐观版本(分别为>= 1.1.10>= 1.1.13),因此任何满足此要求的依赖项(例如1.2.0)都将优先使用特立尼达。

不幸的是,由于JAR的打包方式,git:github:依赖项将无法工作。你需要自己建造宝石。这还不算太糟——除了JDK/JRuby的工作设置之外,你真的只需要Maven。

一旦jruby-rack与变更一起构建/发布,将能够在您的Gemfile中指定一个可行的版本(假设它的版本为1.2.0):

gem 'jruby-rack', '~> 1.2.0'
gem 'trinidad'

也许jruby-rack团队可以将这个特定的更改反向移植到1.1.13维护线上,如果它不引入不兼容性,则推送1.1.13.2版本。或者他们可能愿意从master做一个预发布。


我还没有测试过资产是否正常工作,但是构建和指定本地版本相对容易:

# Assuming mvn is on the path, JRuby is active, and you
# have gem install permissions:
git clone https://github.com/jruby/jruby-rack.git
cd jruby-rack
bundle install
bundle exec rake clean gem SKIP_SPECS=true
gem install --local target/jruby-rack-1.2.0.SNAPSHOT.gem

在此之后,您可以在Gemfile中使用gem 'jruby-rack', '~> 1.2.0.SNAPSHOT'来满足Trinidad并测试您的问题是否解决。

最新更新