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

Ruby on rails 在MRI和jruby之间切换的Shell脚本,ruby-on-rails,ruby,bash,shell,Ruby On Rails,Ruby,Bash,Shell,在一个使用jRuby的项目中工作,但在本地工作时,我经常使用MRI,因为它更快 现在切换到是一个主要的烦恼,这就是我如何从jruby切换到MRI: rvm use ruby-2.1.5 sed -i.bak 3s/.*/ruby" '2.1.5'"/ Gemfile 它将替换我的Gemfile并指定正确的ruby版本。现在我想从rails项目的bin/文件夹中创建两个可执行文件,一个名为mri,另一个名为jruby,这样我就可以使用单个命令在这两个文件之间来回切换,这样团队中的每个人都可以使

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

现在切换到是一个主要的烦恼,这就是我如何从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

  • 这是一个很好的方法来实现我的目标吗? 我肯定不是第一个尝试这个的人

  • 你已经有适合你的东西了吗


  • 正如评论所指出的,您需要重新获取rvm脚本的源代码。 您可能只需要再次获取
    ~/.bash\u profile
    ~/.bash\u rc
    ,因为它们应该在那里获得

    也就是说,我没有这个问题,但我只在MRI版本之间交换。 还有一个RVM和rbenv都支持的
    .ruby版本
    文件的规范


    对于绑定bin存根,您可以使用
    绑定bin存根--path mri bin

    再次绑定RVM脚本。@Greg Burghardt您是什么意思?我应该
    source bin/mri
    ?更改文件后,您需要重新获取位于
    ~/.rvm/scripts
    下的一些文件。也许您可以尝试先在Gemfile中更改Ruby版本,然后运行
    rvmuse
    命令。我建议不要在开发和生产中使用不同的Ruby解释器。实际上我建议不要使用不同的版本,更不用说不同的口译语言了。虽然jruby的启动时间要长得多,但通过在本地使用它可以避免以后的麻烦。为开发和生产使用同一解释器的同一版本。如果您使用的是另一个版本,则必须使用具有生产版本的持续集成服务器。