如何切换到 Rails 上的 truffleruby?

问题描述 投票:0回答:2

我想尝试使用 TruffleRuby 运行 Rails 6,因此我使用 rbenv 安装了 truffleruby-22.0.0.2,添加到我的 Gemfile

ruby 'truffleruby-22.0.0.2
中并运行
bundle install
,但这不起作用。我收到错误“...解析 Gemfile 时出错:格式不正确的要求...”

将 Rails 与 TruffleRuby 结合使用的正确方法是什么?

ruby-on-rails bundler truffleruby
2个回答
1
投票

如果这仍然相关:您可以在这里看到https://github.com/oracle/truffleruby/blob/master/doc/user/compatibility.md到目前为止,Truffle Ruby 的目标是与 MRI Ruby 3.0 兼容.3,因此它将

RUBY_VERSION
环境变量设置为 3.0.3,这是您应该在 Gemfile 中设置的值。

不幸的是,当您这样做时

rbenv
无法检测到您想要使用 Truffle Ruby 而不是 MRI。因此,您还应该运行
export RBENV_VERSION=truffleruby+graalvm-dev
,然后
bundler
将定位到 3.0.3,而
rbenv
将使用 Truffle Ruby。

要了解

bundler
检测到的目标版本是什么,您可以指定任何有效的 ruby 版本(例如 3.1.2 或其他版本),然后运行
bundle
将输出更清晰的错误消息,如下所示:

Your Ruby version is 3.0.3, but your Gemfile specified 3.1.2

0
投票

可能性不大,但在 Rails 中使用另一个 Ruby 实现会引发此错误,这与您在 Gemfile 中声明 Ruby 版本的方式有关。

传统方式:

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '3.1.4'
# ...

其他Ruby实现方式示例:

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '3.1.4', :engine => 'jruby', :engine_version => '9.4.3.0'
# ...
© www.soinside.com 2019 - 2024. All rights reserved.