- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我将 Chef 与 Vagrant 结合使用,并希望使用 RVM 构建一个 Rails 堆栈。
这是到目前为止我的 Vagrantfile 配置的一个片段:
...
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe "apt"
chef.add_recipe "build-essential"
chef.add_recipe "ntp"
chef.add_recipe "openssl"
chef.add_recipe "apache2"
chef.add_recipe "mysql"
chef.add_recipe "mysql::server"
chef.add_recipe "redis"
chef.add_recipe "git"
chef.add_recipe "rvm::system"
chef.add_recipe "rvm::gem_package"
chef.add_recipe "passenger_apache2"
chef.json = {
:mysql => {
:server_root_password => 'root',
:bind_address => '127.0.0.1'
},
:redis => {
:daemonize => 'yes',
:port => '6379'
},
:rvm => {
:rubies => 'ruby-1.9.3-p194',
:global_gems => [
{:name => 'bundler'},
{:name => 'rake'},
{:name => 'passenger',
:version => '3.0.17'
}
]
},
:passenger => {
:version => '3.0.17'
}
}
end
启动 vagrant,配置工作直到它尝试安装 passenger,然后我得到这个错误:
...
ERROR: gem_package[passenger] (passenger_apache2::default line 48) has had an error
ERROR: gem_package[passenger] (/tmp/vagrant-chef-1/chef-solo-1/cookbooks/passenger_apache2/recipes/default.rb:48:in `from_file') had an error:
gem_package[passenger] (passenger_apache2::default line 48) had an error: NoMethodError: undefined method `join' for nil:NilClass
...
通过 sshing 进入 vagrant,我可以看到 RVM 和 gems 安装正常:
vagrant@lucid32:~$ rvm list
rvm rubies
=* ruby-1.9.3-p194 [ i686 ]
# => - current
# =* - current && default
# * - default
vagrant@lucid32:~$ gem list
*** LOCAL GEMS ***
bundler (1.2.1)
daemon_controller (1.0.0)
fastthread (1.0.7)
passenger (3.0.17)
rack (1.4.1)
rake (0.9.2.2)
rubygems-bundler (1.1.0)
rvm (1.11.3.5)
并且手动运行 rvmsudo passenger-install-apache2-module
工作正常
所以我很确定问题是 chef 在没有加载 rvm 的情况下运行它的命令
这里是 cookbooks/passenger_apache2/recipes/default.rb 的命令:第 48-55 行
...
gem_package "passenger" do
version node[:passenger][:version]
end
execute "passenger_module" do
command 'passenger-install-apache2-module --auto'
creates node[:passenger][:module_path]
end
我用于 RVM 和 passaenger_apache 的 Recipe 是:
我尝试用 rvmsudo passenger-install-apache2-module --auto
替换 passenger-install-apache2-module --auto
但没有成功...
有人知道如何让 rvm 和 rvmsudo 在 Chef 中工作吗?
最佳答案
我相信您认为 Chef 在没有加载 rvm 的情况下执行命令是正确的。也许你可以使用 rvm_shell
来自 chef-rvm 的命令来安装 passenger。这样的事情可能会起作用:
rvm_shell "passenger_module" do
ruby_string "ruby-1.9.3-p194"
code "passenger-install-apache2-module --auto"
creates node[:passenger][:module_path]
end
关于ruby - 如何使用 rvmsudo 运行 chef 命令(使用 rvm 安装 passenger),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12550603/
我正在使用运行 Ruby 1.9.3 的 RVM。当我尝试通过以下方式瘦身时: rvmsudo thin start -p 90 我得到: sudo: thin: command not found
Capistrano 不能与我的 deploy.rb 中的 rvmsudo 一起工作。 我试过了 set :sudo, 'rvmsudo' set :sudo_prompt, 'password: '
我正在尝试运行一个 ruby 脚本,它的某些任务需要 root 访问权限。我知道 rvmsudo 存在并且我使用它,但是如果我想设置一个环境变量,例如 TEST_ENV=1,它就不起作用。 例子:
我正在尝试获取 RoR 环境的更新版本。 我正在运行 Ubuntu 12.04,我有这个设置: $ groups user adm cdrom sudo dip plugdev lpadmin sam
我生成了一组我在 .bash_profile 中设置的环境变量 这在使用 RVMSUDO 时不起作用 然后我尝试了 rvm export,在查看 rvmsudo env 时,他们获得了 rvm_old
我刚搬到 RVM。 sudo bundle install 给了我错误:- sudo bundle install /usr/local/rvm/rubies/ruby-1.9.2-p180/lib
我正在关注这篇很棒的文章,以在 ubuntu 10.10 上配置我的 rails 生产服务器:rails production 当我想执行命令时: rvmsudo passenger-install-
我正在尝试做一个 rvmsudo rvm gemset import但我收到此错误: No *.gems file found. .gems文件名为 default.gems . 我试过做 rvmsu
我正在尝试在 Ubuntu 12.04 LTS 虚拟机上配置我自己的“Thingspeak”服务器。我在终端上介绍了这个命令(在 ubuntu 的全新安装上安装):https://github.com
我正在尝试设置 capistrano 以轻松部署我的 rails3 应用程序。我对 Rails 很陌生。 一切正常,除了我试图重新启动独立乘客服务器。 我在同一台服务器上运行 redmine,所以我关
我正在尝试将 passenger/nginx 安装到 ubuntu 12.10 上。 当我尝试运行 rvmsudo passenger-install-nginx-module 时,我得到: /usr
我在 ruby 版本中遇到了这个问题。我一直在寻找解决方案,但我找到的解决方案都不适合我。 系统是 Ubuntu 13.10。 如果我输入 ruby -v 然后我得到了 ruby 2.2.0p0
我将 Chef 与 Vagrant 结合使用,并希望使用 RVM 构建一个 Rails 堆栈。 这是到目前为止我的 Vagrantfile 配置的一个片段: ... config.vm.provisi
我是一名优秀的程序员,十分优秀!