我意识到这个问题已经被问了一百万次了,但是经过几天的搜索,我仍然没有找到合适的答案。
我想在 Centos 7 上运行 Ruby on Rails 5。目前与 Centos 7 一起打包的默认 Ruby 是 2.0.0。对于 Rails 5,我需要更高版本,因此需要 RVM。
以下是我在使用 RVM 时遇到的一些问题:
如果我使用推荐的选项来安装 RVM
\curl -sSL https://get.rvm.io | bash -s stable --ruby
RVM 和所有 Ruby gem 将安装到我的
$HOME
目录中,但这并不理想,因为服务器有很多用户,而且,由于它是一个 Web 服务器,当然不希望将 gem 包含在用户的主目录中,特别是如果这些目录可以随时删除(如果员工的合同结束)。有些人建议安装 RVM
sudo
来解决这个问题(尽管同样多的人不赞成这种方法,因为它似乎否定了 RVM 的目的):\curl -sSL https://get.rvm.io | sudo bash -s stable --ruby
并根据 RVM 自己的建议,我注释掉包含
Defaults secure_path=...
并且我的 gem 被安装到
/usr/local/rvm/gems/ruby-2.3.1
中,这很好,除了它会产生另一个问题:如果我运行
gem install rails
我会收到一个错误:You don't have write permissions for the /usr/local/rvm/gems/ruby-2.3.1 directory.
是的,我可以通过将自己添加到
rvm
组来解决这个问题,但这并不理想,因为这意味着我总是必须记住将每个新用户添加到该组并从该组中删除每个旧用户。如果我运行,
sudo gem install rails
我也会收到一个错误:/usr/bin/env: ruby: No such file or directory
如果我运行
rvmsudo gem install rails
,一切正常,除了我还必须运行bundle install
usingrvmsudo
,这会产生警告,因为不建议这样做。我可以使用
root
用户运行所有内容,这很有效......但是我需要记住更改我所有项目文件的所有者,因为 apache 并不完全具有 root 权限并且无法写入某些项目目录。root
另外,在很多层面上运行似乎都是错误的。
换句话说,无论我在使用 RVM 时选择哪种方法,都会遇到一个问题或另一个问题。也许,成功部署此功能的其他人可以分享他们的见解。
我能想出的唯一合理的方法是创建一个专用的 Rails 用户,所有服务器用户都会在执行任何维护之前切换到该用户,但我担心像 apache 这样的服务不会“看到”宝石安装在本地。
评论,想法,想法?也许我对 RVM 缺少一些东西?