我在 openshift 创建了一个项目,gemfile 里面的 rails 版本是 3.2.6 而我本地的版本是 3.2.9 当我 bundle install 或者 rails g 创建 controller 的时候,总是提示我错误
我不知道这种 rails 版本不一致的问题要怎么去解决呢,我再安装一个 3.2.6?
另外还有一个比较迷惑的 如果当前的 ruby 版本是系统的
gem install rails
这个 rails 是不是就安装到了 1.8 那个 ruby 下面
当我用 rvm 安装了 1.9.3 版本,并且设置为默认,rails 是不是还要重新安装
如果安装的话,这时候用 rails 创建的项目是不是就使用的是 1.9.3 版本下面的,还是要配置下$PATH 呢
bundle install 提示什么错误?
系统本地的 ruby 和 rvm 管理的 ruby 的 gems 是独立的,而且 rvm 管理的不同的 ruby 的 gems 也是独立的。
正确安装 rvm 的话,切换到什么 ruby,就是用什么 gems 集,环境变量都已经设置好不用自己设。
» bundle show thor Parker@local
/Library/Ruby/Gems/1.8/gems/thor-0.14.6
```
rails s Could not find thor-0.14.6 in any of the sources Run
bundle install
to install missing gems.
刚开始是提示 could not find any resource of 3.2.6 大致是这样的,我把 gemfile 里的 rails 改成了我的 rails 版本 3.2.9
然后执行了一次 bundle update,现在这个 thor 找不到
我比较迷惑的是多人协同开发,这种 rails 版本不一的情况怎么弄,在某版本下安装的 rails,是不是只和这个版本的 ruby 相对应,不是独立的呢
bundle install 呢?
现在希望用系统 ruby 还是 rvm?把 PATH 输出看一下 echo $PATH
多人开发就是 gem 版本完全对着 Gemfile.lock,如果要锁 Ruby 版本就加上 .rvmrc(不过对方可以忽略)。
在某版本下安装的 rails,是不是只和这个版本的 ruby 相对应,不是独立的呢
RVM 管理的每个版本 Ruby 都有一个 gems 目录,相互独立。ls $rvm_path/gems
你用 rvm 安装了 1.9.3 并设置为默认,然后安装了 rails3.2.9,此时 rails 应该是在 global 的 gemset 里的。然后你的项目里需要的 rails 是 3.2.6 的。于是,你可以在该项目路径下创建一个新的 gemset,例如:
rvm use 1.9.3@openshift --create --rvmrc
这样,你每次进入这个项目的时候,就会切换到新的 gemset 来,于是就和你全局下的 3.2.9 隔离开了。然后你运行bundle install
好了,就会在新的 gemset 里安装 3.2.6 的 rails,ok。
我是用的 homebrew 安装的 ruby
>ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.2.0]
我删除了本地的 rvm 目录,没清理 path
>echo $PATH
/usr/local/bin:/Users/Parker/.rvm/gems/ruby-1.9.3-p125/bin:/Users/Parker/.rvm/gems/ruby-1.9.3-p125@global/bin:/Users/Parker/.rvm/rubies/ruby-1.9.3-p125/bin:/Users/Parker/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin
rvm or homebrew 用哪个搭建环境好些
rvm 和 homebrew 是两个不搭边的东西。homebrew 是系统的包管理工具,它可以用来安装 ruby,但是不同版本的 ruby 就需要用户手动去管理了。rvm 是专门用来管理不同版本 ruby 的工具,和 homebrew 应该配合着用。建议你还是去好好读一下 rvm 的文档,花一下午的功夫就理清头绪了。