Ruby 2.2.1 在 Vagrant VM 中使用 Chef
Ruby 2.2.1 in Vagrant VM using Chef
为 rails 应用程序 设置新的 开发环境
目标
克隆存储库(见下文)。然后 运行:
vagrant up
vagrant ssh
最后 运行ning bundle install
在应用程序文件夹中应该可以使用已安装的 ruby 2.1.2.
我已经阅读了几个教程,这些教程描述了如何使用各种食谱和不同的策略(rbenv、rvm、ruby-install、ruby-构建)。但是,尽管有时可以正确配置机器,但我无法通过 ssh 进入机器并且 运行 bundle install
没有以下错误消息:
The program 'bundle' is currently not installed. To run 'bundle' please ask your
administrator to install the package 'bundler'
我现在将根据本教程展示我最近的尝试:
http://www.gotealeaf.com/blog/chef-basics-for-rails-developers/
我已将其上传到 github 此处:
https://github.com/denniske/vagrant-chef-ruby
在创建 vagrant 机器并配置和 ssh 到机器后,我得到以下信息:
vagrant@vagrant-ubuntu-trusty-64:~$ ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
vagrant@vagrant-ubuntu-trusty-64:~$ which ruby
/usr/bin/ruby
vagrant@vagrant-ubuntu-trusty-64:~$ bundle
Could not locate Gemfile or .bundle/ directory
vagrant@vagrant-ubuntu-trusty-64:~$ cd /usr/local/ruby/2.1.2/bin
vagrant@vagrant-ubuntu-trusty-64:/usr/local/ruby/2.1.2/bin$ ls
erb gem irb rake rdoc ri ruby testrb
问题 1:似乎默认 ruby 是 chef 用于供应 (1.9.3) 的 ruby,我不想将其用于我的 rails申请.
bundler
已成功安装,但连接到默认(错误)ruby 版本。
Ruby 2.2.1 已安装到 /usr/local/ruby/2.1.2
。
问题 2:通过在 default.rb 中使用这样的代码,我似乎能够 使我的 ruby 版本成为默认版本,但是捆绑器无法工作.
link "/usr/bin/ruby" do
to "/usr/local/ruby/2.1.2/bin/ruby"
end
link "/usr/bin/gem" do
to "/usr/local/ruby/2.1.2/bin/gem"
end
有没有人知道如何解决这个问题/可以创建一个拉取请求来让它工作?
似乎 gem_package
命令有问题。
我能够通过将 execute
资源替换为
来使其工作
execute "install gem" do
command "gem install bundler --no-rdoc --no-ri"
end
并移除
gem_package 'bundler' do
options '--no-ri --no-rdoc'
# gem_binary "/usr/local/ruby/2.1.2/bin/gem"
end
很抱歉这不是我原来问题的真正直接答案,但我用另一种方式解决了这个问题并想与您分享。
我找到了网站 rove.io 并选择了语言 > Ruby > rbenv > 2.1.2,下载了软件包。然后我将捆绑器 gem 添加到下载的 Vagrantfile 中的 chef.json 配置中:
chef.json = {
:rbenv => {
:user_installs => [
{
:user => "vagrant",
:rubies => [
"2.0.0-p647"
],
:global => "2.0.0-p647",
'gems' => {
'2.0.0-p647' => [
{
'name' => 'bundler',
'version' => '1.10'
}
]
}
}
]
}
}
然后我创建了 vagrant 机器,一切正常。
注意:我已经在 ubuntu14 之前尝试过使用 rvm 和 chef。那没有用(由于一些奇怪的错误)。但是 rove.io Vagrantfile 使用的 ubuntu 版本有效。
我不会指定说明书实现本身,但您需要实现以下内容:
- 安装您最喜欢的
ruby
版本(包括 gem
)。
- 更新默认
ruby
和 gem
符号链接,参见:/usr/bin/ruby
和 /usr/bin/gem
。
- 安装您最喜欢的
bundler
版本。
您可以通过实施 minitests
实现您想要的(参见 minitest, and chef-minitest-handler)
目标
克隆存储库(见下文)。然后 运行:
vagrant up
vagrant ssh
最后 运行ning bundle install
在应用程序文件夹中应该可以使用已安装的 ruby 2.1.2.
我已经阅读了几个教程,这些教程描述了如何使用各种食谱和不同的策略(rbenv、rvm、ruby-install、ruby-构建)。但是,尽管有时可以正确配置机器,但我无法通过 ssh 进入机器并且 运行 bundle install
没有以下错误消息:
The program 'bundle' is currently not installed. To run 'bundle' please ask your
administrator to install the package 'bundler'
我现在将根据本教程展示我最近的尝试: http://www.gotealeaf.com/blog/chef-basics-for-rails-developers/
我已将其上传到 github 此处: https://github.com/denniske/vagrant-chef-ruby
在创建 vagrant 机器并配置和 ssh 到机器后,我得到以下信息:
vagrant@vagrant-ubuntu-trusty-64:~$ ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
vagrant@vagrant-ubuntu-trusty-64:~$ which ruby
/usr/bin/ruby
vagrant@vagrant-ubuntu-trusty-64:~$ bundle
Could not locate Gemfile or .bundle/ directory
vagrant@vagrant-ubuntu-trusty-64:~$ cd /usr/local/ruby/2.1.2/bin
vagrant@vagrant-ubuntu-trusty-64:/usr/local/ruby/2.1.2/bin$ ls
erb gem irb rake rdoc ri ruby testrb
问题 1:似乎默认 ruby 是 chef 用于供应 (1.9.3) 的 ruby,我不想将其用于我的 rails申请.
bundler
已成功安装,但连接到默认(错误)ruby 版本。
Ruby 2.2.1 已安装到 /usr/local/ruby/2.1.2
。
问题 2:通过在 default.rb 中使用这样的代码,我似乎能够 使我的 ruby 版本成为默认版本,但是捆绑器无法工作.
link "/usr/bin/ruby" do
to "/usr/local/ruby/2.1.2/bin/ruby"
end
link "/usr/bin/gem" do
to "/usr/local/ruby/2.1.2/bin/gem"
end
有没有人知道如何解决这个问题/可以创建一个拉取请求来让它工作?
似乎 gem_package
命令有问题。
我能够通过将 execute
资源替换为
execute "install gem" do
command "gem install bundler --no-rdoc --no-ri"
end
并移除
gem_package 'bundler' do
options '--no-ri --no-rdoc'
# gem_binary "/usr/local/ruby/2.1.2/bin/gem"
end
很抱歉这不是我原来问题的真正直接答案,但我用另一种方式解决了这个问题并想与您分享。
我找到了网站 rove.io 并选择了语言 > Ruby > rbenv > 2.1.2,下载了软件包。然后我将捆绑器 gem 添加到下载的 Vagrantfile 中的 chef.json 配置中:
chef.json = {
:rbenv => {
:user_installs => [
{
:user => "vagrant",
:rubies => [
"2.0.0-p647"
],
:global => "2.0.0-p647",
'gems' => {
'2.0.0-p647' => [
{
'name' => 'bundler',
'version' => '1.10'
}
]
}
}
]
}
}
然后我创建了 vagrant 机器,一切正常。
注意:我已经在 ubuntu14 之前尝试过使用 rvm 和 chef。那没有用(由于一些奇怪的错误)。但是 rove.io Vagrantfile 使用的 ubuntu 版本有效。
我不会指定说明书实现本身,但您需要实现以下内容:
- 安装您最喜欢的
ruby
版本(包括gem
)。 - 更新默认
ruby
和gem
符号链接,参见:/usr/bin/ruby
和/usr/bin/gem
。 - 安装您最喜欢的
bundler
版本。
您可以通过实施 minitests
实现您想要的(参见 minitest, and chef-minitest-handler)