2011-12-04 29 views
1

我是一个新用户Capistrano的,并使用它来部署一个导轨3.1的应用程序。在远程服务器上安装gem似乎存在问题。轨道,新的Ubuntu安装,Capistrano的,RVM发出

我有以下问题:

  1. 它看起来像帽运行捆绑安装在gemfile?是否有任何依赖关系为此成功工作?我的服务器上有rvmbundler。它是否需要安装导轨?

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

    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 /本地/ RVM在/ usr /本地/ RVM /斌/ RVM壳“默认'-c' CD /数据/网站/ MYSERVER /应用/ MYAPP /发行/ 20111204181321& &捆绑安装--gemfile /数据/网站/ MYSERVER /应用/ MYAPP /发行/ 20111204181321/Gemfile中--path /数据/网站/ MYSERVER /应用/ MyApp的/共享/捆--deployment --quiet --without开发测试上173.230.xxx.xxx

“”如果我进入以前的版本,并运行捆绑安装,它说,一切安装正确,它没有。

它说:

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

但如果我在那里去,没有什么其他比1.9.1这就给我所知,我没有安装(使用Ruby 1.9.2- P290)

是否有capistrono的方式来指定它不删除已部署的版本,这样我可以调试明确?我需要在我的deploy.rb脚本中硬编码到我的捆绑器的路径?

THX再次

EDIT 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>' 
+0

你可以试试'cap shell'(local),然后在capistrano shell中运行'rvm current'和'which bundle'吗? Capistrano外壳为您提供了一个机会,可以在帽子看到它时从环境中工作。 – HectorMalot

回答

1
  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, '[email protected]_name' 
    
  3. 你可以用“帽壳”通过Capistrano的服务器上运行命令。你可以用它来检查所有宝石的安装。使用cap -T查看所有可能性。

在附注中,您是否真的需要rvm gemsets for your app?我使用RVM在我的生产服务器上安装和更新我的红宝石,但我让Bundler处理我的宝石分离。由于生产中的默认捆绑器设置将所有宝石放置在供应商/捆绑包中,这已经将您的宝石彼此分离。这对Capistrano也很有效。

查看同类的问题和答案here。一些capistrano/bundler/rvm /乘客设置的更多信息可以在this tutorial中找到。