繁体   English   中英

导轨,新的Ubuntu安装,capistrano,rvm问题

[英]rails, new ubuntu install, capistrano, rvm issues

我是Capistrano的新用户,并用它来部署Rails 3.1应用程序。 在远程服务器上安装gem似乎有问题。

我有以下问题:

  1. 看起来cap在gemfile上运行捆绑安装? 是否有任何依赖关系才能使它成功运行? 我的服务器上有rvmbundler 是否需要已经安装导轨?

  2. 我已经手动设置bundle_cmd在我deploy.rb这样的:

     set :bundle_cmd, '/usr/local/rvm/gems/ruby-1.9.2-p290/bin/bundle' 

    这是正确的吗?

  3. 有没有办法在盖帽部署中确认所有必需的宝石都在那里? 还是在远程服务器上调试失败的捆绑软件安装的最佳方法是什么? 你能称呼诸如cap gem-list类的东西吗? 希望像cap invoke=gem list这样的东西可以做到,但看起来不像。

编辑#1

我收到以下错误:失败:“ rvm_path = / usr / local / rvm / usr / local / rvm / bin / rvm-shell'default'-c'cd / data / sites / myserver / apps / myapp / releases / 20111204181321 &&捆绑安装--gemfile / data / sites / myserver / apps / myapp / releases / 20111204181321 / Gemfile --path / data / sites / myserver / apps / myapp / shared / bundle --deployment --quiet --without开发测试”“在173.230.xxx.xxx上

如果我进入以前的版本,然后运行捆绑安装,它表示一切安装正确,而没有。

它说:

Your bundle is complete! It was installed into /data/sites/myserver/apps/myapp/shared/bundle

但是如果我去那里,除了我所知我没有安装的ruby 1.9.1之外没有别的(使用ruby 1.9.2-p290)

capistrono中是否有一种方法可以指定它不删除已部署的发行版,以便我可以进行明确的调试? 我需要在我的deploy.rb脚本中硬编码到捆绑器的路径吗?

再次感谢

编辑2如果我进入当前版本,请访问:

/data/sites/myserver/apps/myapp/current

并运行:

$ which bundle
/usr/local/rvm/gems/ruby-1.9.2-p290/bin//bundle

我得到:

$ bundle install
/usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find bundler (>= 0) amongst [minitest-1.6.0,rake-0.8.7, rdoc-2.5.8] (Gem::LoadError)
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb:1210:in `gem'
from /usr/local/rvm/gems/ruby-1.9.2-p290/bin/bundle:18:in `<main>'
  1. 您不需要已经安装滑轨,但是我确实认为您需要安装捆绑器。 gem install bundler

  2. 您可以使用capistrano中的RVM和捆绑程序集成。 在这种情况下,您不必设置捆绑程序的路径。

     $:.unshift(File.expand_path('./lib', ENV['rvm_path'])) require "rvm/capistrano" require "bundler/capistrano" # Load RVM's capistrano plugin. set :rvm_type, :system set :rvm_ruby_string, '1.9.2@gemset_name' 
  3. 您可以使用“ cap shell”在服务器上通过Capistrano运行命令。 您可以使用它来检查所有gem的安装。 使用cap -T查看所有可能性。

附带说明一下,您是否真的需要为应用程序安装rvm gemsets? 我使用RVM在生产服务器上安装和更新红宝石,但我让Bundler处理宝石的分离。 由于生产中的默认捆绑器设置将所有宝石都放置在供应商/捆绑中,因此这已经使您的宝石彼此分离。 这对Capistrano也很好。

在这里看到类似的问题和答案。 本教程中可以找到关于capistrano / bundler / rvm / passenger设置的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM