标签: capistrano

如何配置capistrano以使用我的rvm版本的Ruby

有谁知道我怎么能告诉capistrano在我推动的服务器上使用我的默认rvm版本的ruby.它坚持使用系统版本.

它甚至可能吗?

ruby capistrano rvm

32
推荐指数
4
解决办法
2万
查看次数

将参数传递给Capistrano

我正在研究使用Capistrano作为通用部署解决方案的可能性."通用",我的意思是不是铁轨.我对我发现的文档的质量不满意,但是,我认为,我不是在考虑那些假设你正在部署rails的文档.所以我会尝试基于一些例子来解决问题,但是我从一开始就面临着一些问题.

我的问题是cap deploy没有足够的信息来做任何事情.重要的是,它缺少我要部署的版本标签,而这具有在命令行上传递.

另一个问题是我如何指定我的git存储库.我们的git服务器在用户的帐户上通过SSH访问,但我不知道如何更改deploy.rb以使用用户的id作为scm URL的一部分.

那么,我该如何完成这些事情呢?

我想部署第二个版本的第一个sprint的结果.那被标记在git存储库中r2s1.另外,假设用户"johndoe"负责部署系统.要访问存储库,他必须使用URL johndoe@gitsrv.domain:app.因此,存储库的远程URL取决于用户ID.

获取所需文件的命令行将是:

git clone johndoe@gitsrv.domain:app
cd app
git checkout r2s1
Run Code Online (Sandbox Code Playgroud)

deployment capistrano

31
推荐指数
3
解决办法
3万
查看次数

捆绑安装不适用于capistrano

我想通过它部署我的简单rails 4.0应用程序capistrano 3.0.

我使用bundler 1.3.5所以我添加capistrano-bundler gem来集成bundist与capistrano.

我有非常简单的配置(几乎默认):

set :bundle_gemfile, -> { release_path.join('Gemfile') }
set :bundle_dir, -> { shared_path.join('bundle') }
set :bundle_flags, ''
set :bundle_without, %w{test development}.join(' ')
set :bundle_binstubs, -> { shared_path.join('bin') }
set :bundle_roles, :all
Run Code Online (Sandbox Code Playgroud)

当我运行cap staging deploy --trace它失败时:

[50b524bc] Running /usr/bin/env bundle --gemfile /home/webmaster/www/api/releases/20131014144650/Gemfile --path /home/webmaster/www/api/shared/bundle  --binstubs /home/webmaster/www/api/shared/bin --without test development on 125.51.3.1
DEBUG [50b144bc] Command: cd /home/webmaster/www/api/releases/20131014144650 && /usr/bin/env bundle --gemfile /home/webmaster/www/api/releases/20131014144650/Gemfile --path /home/webmaster/www/api/shared/bundle  --binstubs /home/webmaster/www/api/shared/bin --without test …
Run Code Online (Sandbox Code Playgroud)

ruby deployment capistrano ruby-on-rails bundler

31
推荐指数
2
解决办法
3万
查看次数

Capistrano与PostgreSQL,错误:其他用户正在访问数据库

我有一个Rails应用程序,它使用PostgreSQL作为后端,具有试图模仿生产的证书环境,除了它需要定期重置数据库以进行QA.

当我db:reset在部署期间尝试从Capistrano任务执行时,我收到错误:

ERROR: database "database_name" is being accessed by other users

并且数据库不能作为重置任务的一部分被删除,从而导致部署失败.有没有办法可以从Capistrano重置数据库连接,这样我就可以成功删除表格?从Capistrano任务管道SQL到psql可能会有效,但我想知道是否有更好的方法来解决这个问题.

postgresql capistrano ruby-on-rails

30
推荐指数
2
解决办法
3万
查看次数

Capistrano 3在目录中执行

我正在尝试为Capistrano 3编写一个涉及在当前版本目录中执行"composer install"的任务.它看起来像这样:

namespace :composer do
  desc 'Install dependencies with Composer'
  task :install do
    on roles(:web) do
      within release_path do
        execute "#{fetch(:composer_command)} install"
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

composer_command 在登台和生产文件中设置 - 在我的特定情况下 php /home/user/composer.phar

由于某种原因,此命令实际上并不在当前版本目录中运行,而是在父目录中运行(包含当前,共享,发布等)

我深入研究了这一点,发现当我运行单个单词命令时,如:

within release_path do
    execute "pwd"
end
Run Code Online (Sandbox Code Playgroud)

它工作得很好,并在当前版本目录中运行该命令.但是......当我运行带空格的命令时,例如:

within release_path do
    execute "pwd && ls"
end
Run Code Online (Sandbox Code Playgroud)

它在父目录中运行,而不是在within块设置的目录中运行.

有人可以对此有所了解吗?谢谢!

ruby capistrano ruby-on-rails composer-php capistrano3

30
推荐指数
4
解决办法
2万
查看次数

Capistrano 3 sudo任务

我想用Capistrano 3编写一个配方,用sudo在远程服务器上执行任务.

使用Capistrano 2,可以这样做:

default_run_options[:pty] = true

task :hello do
  run "#{sudo} cp ~/something /something"
end
Run Code Online (Sandbox Code Playgroud)

有了Capistrano 3,我发现:

set :pty, true
Run Code Online (Sandbox Code Playgroud)

但我无法执行使用sudo运行的任务.

如何使用sudo运行任务?

capistrano ruby-on-rails capistrano3

30
推荐指数
3
解决办法
2万
查看次数

/ usr/bin/env ruby​​没有这样的文件或目录:使用capistrano 3,capistrano/rbenv,capistrano/bundler和capistrano/rails(使用rails 4)

我正在使用capistrano,capistrano/rbenv,capistrano/bundler和capistrano/rails.我在capistrano编译资产的步骤中收到此错误:

DEBUG [49a50df6]    /usr/bin/env:
DEBUG [49a50df6]    ruby
DEBUG [49a50df6]    : No such file or directory
DEBUG [49a50df6]
Run Code Online (Sandbox Code Playgroud)

在生产服务器上/usr/bin/env ruby -v是正确的.我知道这一点:为什么 - 做什么 - 在我的ssh-session-work-but-not-in-capistrano中工作 但是我无法让它工作.

这是我的Capfile:

# Load DSL and Setup Up Stages
require 'capistrano/setup'

# Includes default deployment tasks
require 'capistrano/deploy'

# Includes tasks from other gems included in your Gemfile
#
# For documentation on these, see for example:
#
#   https://github.com/capistrano/rvm
#   https://github.com/capistrano/rbenv
#   https://github.com/capistrano/chruby
#   https://github.com/capistrano/bundler
#   https://github.com/capistrano/rails/tree/master/assets
#   https://github.com/capistrano/rails/tree/master/migrations
# …
Run Code Online (Sandbox Code Playgroud)

ruby capistrano ruby-on-rails

27
推荐指数
4
解决办法
3万
查看次数

使用Capistrano 3设置默认阶段

有没有办法在Capistrano 3中设置默认阶段?

我已经尝试放入set :stage, :productiondeploy.rb,但这不起作用,它给出了错误:

Stage not set, please call something such as `cap production deploy`,
where production is a stage you have defined
Run Code Online (Sandbox Code Playgroud)

我现在只有一个阶段所以我希望能够运行cap deploy并让它在默认情况下执行.

ruby capistrano ruby-on-rails

27
推荐指数
2
解决办法
2万
查看次数

将git子模块协议从git替换为http

我从git @ ... URL添加一个子模块,以便能够在其中进行开发.现在我想部署应用程序并用git:// ...替换URL,因此它不需要对来自Capistrano的子模块的repo进行身份验证.是否完全在.gitmodules中编辑URL来完成此操作?

git capistrano

26
推荐指数
1
解决办法
6593
查看次数

使用Capistrano在Heroku上部署?

我还是习惯了Rails开发生态系统.最近我学会了如何使用capistrano使用apache和passenger来部署到我的服务器,我喜欢如何将一组相当复杂的部署指令放到我的deploy.rb中,以便它们通过单个"cap deploy"调用执行,如果出现任何问题,请自动回滚.

现在我正在考虑在Heroku上部署我的项目,我希望能够在那里使用capistrano进行部署.但我一直无法找到有关如何执行此操作的任何文档.可能吗?是否有capistrano任务可以让我在Heroku上自动部署?

这甚至有意义吗?毕竟capistrano以特定的方式工作(ssh进入服务器)并假设一个特定的目录结构(公共/发布/共享等).据我所知,Heroku无法实现这两个目标.但我仍然希望有capistrano的便利.我知道我可以将部署所需的步骤(git push/migrate/restart resque workers ...)放到一个rake任务中,并且我可以通过调用单个命令来部署; 但我不会受益于capistrano交易和回滚,这在我看来非常重要.

我可能遗漏了一些关于这些技术如何融合在一起的非常基础的东西.令我感到惊讶的是,我无法在任何地方找到关于这个主题的任何讨论.谁能分享他们的经历?

capistrano ruby-on-rails heroku

25
推荐指数
1
解决办法
7898
查看次数