我使用RVM(Ruby版本管理器)为我的每个Rails项目指定一个Ruby版本和一组gem.
我有一个.rvmrc文件,每当我cd进入项目目录时自动选择一个Ruby版本和gemset .
安装RVM 1.19.0后,我收到一条消息
您正在使用
.rvmrc,它需要信任,它速度较慢且与其他ruby管理器不兼容,您可以切换到.ruby-version使用rvm rvmrc to [.]ruby-version或忽略此警告rvm rvmrc warning ignore /Users/userName/code/railsapps/rails-prelaunch-signup/.rvmrc,.rvmrc将继续作为RVM 1和RVM 2中的默认项目文件,忽略运行所有文件的警告rvm rvmrc warning ignore all.rvmrcs.
我应该继续使用我的.rvmrc文件还是应该切换到.ruby-version文件?哪个是最佳的?有什么后果?
我的项目遇到了一些问题.我.rvmrc使用以下配置保存在项目的目录中:
rvm use 1.9.2
我把以下几行放入我的~/.zshrc:
rvm_project_rvmrc=1
[[ -s $HOME/.rvm/scripts/rvm ]] && source $HOME/.rvm/scripts/rvm
Run Code Online (Sandbox Code Playgroud)
然而,无论何时我cd进入我的项目目录,都会ruby -v显示出来ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0].
我在这里错过了什么?
我们使用RVM来管理数十个项目的rubies和gemsets.
有时我会编辑.ruby-version或.ruby-gemset文件,或从我们的VCS中提取这些文件的较新版本,但当然RVM不知道这些更改,除非我告诉它.如果变化来自VCS,即使我可能也没有意识到它们.那么最好的方法是什么?
能够自动化该过程会很好,因此每当我从存储库中获取更改时它都会自动完成.
我知道让RVM重新读取这些文件的唯一方法是cd到另一个目录,然后返回到项目目录.这显然很简单,而且很简单,但它似乎不仅仅是有点不优雅,而且不是自我记录的.
我希望有一些命令rvm reload(如存在,但做其他事情)重新读取项目文件,但我找不到任何类似的东西.
我已经创建了一个名为gemset rails2ruby192,我.rvmrc在根文件目录中添加了以下代码,但它没有加载gemset.
ruby-1.9.2-p180@rails2ruby192
Run Code Online (Sandbox Code Playgroud) 我有ansible-playbook成功安装rvm.但现在我必须更改默认的ruby版本.我尝试过:
- name: Install Bundler
command: bash -lc "rvm use 2.1.2-p95"
Run Code Online (Sandbox Code Playgroud)
要么
- name: use 2.1
shell: /usr/bin/env bash -lc "rvm use 2.1.2-p95"
Run Code Online (Sandbox Code Playgroud)
要么
- name: use 2.1
shell: rvm use 2.1.2-p95
Run Code Online (Sandbox Code Playgroud)
但是没有任何ansible看起来一切正常,但是当我使用相同的用户登录ssh时使用ansible并运行rvm currentruby版本是一样的.
我怀疑从ssh和bash登录shell但我可以看到解决方案.
让我在这个问题前面说这是在zsh中发生的.
我将rvm更新为1.15.8版.我强行重新安装了所有的红宝石.还将宝石设置回原始状态.这是我遇到的问题列表:
# 1.8.7 no longer compiles because it
# Going to a project directory that contains a .rvmrc file now causes this:
__rvm_remove_from_path:11: failed to compile regex: invalid character range
__rvm_remove_from_path:11: failed to compile regex: invalid character range
__rvm_remove_from_path:11: failed to compile regex: invalid character range
__rvm_remove_from_path:11: failed to compile regex: invalid character range
__rvm_remove_from_path:11: failed to compile regex: invalid character range
__rvm_remove_from_path:11: failed to compile regex: invalid character range
... for thousands of lines with no end.
# …Run Code Online (Sandbox Code Playgroud) 如果Bundler检索到正确的gems(和依赖项)并将它们锁定在给定项目的Gemfile.lock中,那么对于同一个项目是否过度杀戮不使用gemset?我被告知使用gemsets仍然是一个很好的做法,因为在你当前的PATH中只有2个版本的同一个gem会导致冲突.这是正确的,还是只需要一个或另一个:Bundler或RVM?