ruby-on-rails - 在 MRI 和 jruby 之间切换的 Shell 脚本

标签 ruby-on-rails ruby bash shell

在一个使用 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 不会更改我当前 session 中的 ruby​​ 版本。所以很自然地我收到了这条消息:

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

  1. 对于我正在尝试做的事情,这是一个好的方法吗? 很确定我不是第一个尝试这个的人

  2. 您是否已经有了适合自己的东西?

最佳答案

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

也就是说,我在 rbenv 上没有遇到过这个问题,但我只在 MRI 版本之间交换。 还有一个 .ruby-version 文件的规范 see here RVM 和 rbenv 都荣幸。

对于捆绑 bin stub ,您可以 specify a bin path使用 bundle binstubs --path mri-bin

关于ruby-on-rails - 在 MRI 和 jruby 之间切换的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31656873/

相关文章:

ruby-on-rails - 类地址的父类(super class)不匹配 Braintree

ruby-on-rails - 在 Ruby on Rails 中使用 https 和 SSL

ruby - 将短字符串添加到 Ruby 中的集合很慢

linux - 使用 find 和 exec 命令将日期附加到文件名

linux - 检查产生其他进程的 bash 脚本中的总内存使用情况

ruby-on-rails - Rails 中的限制 "each"列表

css - 当子元素需要比父元素宽时覆盖 Bootstrap 容器宽度

ruby-on-rails - 使用 Squeel 时参数数量错误

gsub 的 ruby​​ eval ('\1' ) 可能吗?

bash - 使用 {$var} 在 for 循环中进行变量替换