【问题标题】:Shell script to switch between MRI and jruby用于在 MRI 和 jruby 之间切换的 Shell 脚本
【发布时间】:2015-10-17 20:41:00
【问题描述】:

从事一个使用 jRuby 的项目,但是当我在本地工作时,我经常使用 MRI,因为它更快。

现在在 to 之间切换是一个主要的烦恼,这就是我从 jruby 切换到 MRI 的方式:

rvm use ruby-2.1.5
sed -i.bak 3s/.*/ruby" '2.1.5'"/ Gemfile 

它替换了我的 Gemfile 并指定了正确的 ruby​​ 版本。现在我想从我的rails项目的bin/文件夹中创建两个可执行文件,一个叫mri,另一个叫jruby,这样我就可以使用一个命令在两者之间来回切换,这样每个工作的人一个团队可以使用相同的。

问题在于,当 shell 执行时,RVM 不会更改我当前会话中的 ruby​​ 版本。所以很自然地我收到了这条信息:

您的 Ruby 版本是 2.0.0,但您的 Gemfile 指定的是 2.1.5

  1. 这是我尝试做的一个好方法吗? 很确定我不是第一个尝试这个的人

  2. 你已经有适合你的东西了吗?

【问题讨论】:

  • 您需要再次source RVM 脚本。
  • @Greg Burghardt 你是什么意思?我应该source bin/mri ?
  • 您需要在更改 Gemfile 后重新获取位于 ~/.rvm/scripts 下的一些文件。也许您尝试首先 更改 Gemfile 中的 Ruby 版本,然后运行 ​​rvm use 命令。
  • 我建议不要在开发和生产中使用不同的 ruby​​ 解释器。我实际上建议不要使用不同的版本,更不用说不同的解释语言了。虽然 jruby 的启动时间要长得多,但以后在本地使用它可以省去麻烦。
  • 我在这里和@joonty 在一起。对开发和生产使用相同版本的相同解释器。如果您使用的是不同的服务器,那么必须使用带有生产版本的持续集成服务器。

标签: ruby-on-rails ruby bash shell


【解决方案1】:

正如 cmets 所指出的,您需要重新获取 rvm 脚本的资源。 您可能可以再次获取 ~/.bash_profile~/.bash_rc,因为它们应该从那里获取。

话虽如此,rbenv 没有这个问题,但我只在 MRI 版本之间交换。 还有一个 .ruby-version 文件 see here 的规范,RVM 和 rbenv 都尊重。

对于捆绑 bin 存根,您可以 specify a bin pathbundle binstubs --path mri-bin

【讨论】:

    猜你喜欢
    • 2018-10-18
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多