繁体   English   中英

使用Bundler和Capistrano部署Rails 3 App

[英]Deployment of Rails 3 App using Bundler and Capistrano

在capistrano部署Rails3应用程序期间,我希望我的服务器在每次部署时使用Gemfile.lock安装gem。 因为我的服务器没有rvm和所有..所有宝石都应该作为系统宝石安装。

要安装系统gem,我们需要把sudo gem install anygem或者sudo gem install anygem ,我们需要在我们current的capistrano部署结构目录中提供命令sudo bundle install

每次我部署时,我的部署都会在gems安装过程中中断。 我需要运行sudo bundle install 为此,我需要一个capistrano的部署钩子。 由bundler gem本身提供的预构建的对我来说不起作用。 我的困惑归结为这三个问题。

  1. 我什么时候应该在部署过程中调用sudo bundle install命令 - 我的意思是在哪个capistrano任务之后?

  2. 要使用capistrano运行sudo命令,我应该在cap文件中指定哪些声明? 注意 - 我已经将我的公钥作为我的服务器中的授权密钥。

  3. 如何将bundle install hook写入cap文件?

请帮忙。

deploy.rb添加require "bundler/capistrano" 应该可以正常工作。 它应该声明一个文件夹来安装gems,不需要suv访问,无论rvm如何。

那还在为你失败吗?

如果您运行bundle install --deployment ,则不应该需要sudo访问权限,因为gem应该安装到应用程序中的vendor / bundle而不是系统本身。

我在deploy.rb中使用它:

require "bundler/capistrano"
... deploy recipe

namespace :bundle do
  desc "Install bundles into application"
  task :install, :roles => [:app] do
    run "cd #{current_path} && LC_ALL='en_US.UTF-8' bundle install --deployment --without test"
  end
end

然后在正常部署后运行“cap bundle:install”

注意:使用UTF-8来防止ruby1.9 ASCII字符问题。

暂无
暂无

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

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