Tag: capistrano

如何从类中访问“全局”(常量?)capistrano变量? (ruby)

所以我在capistrano中的deploy.rb脚本就像这样开始,我猜这很正常: require ‘capistrano/ext/multistage’ require ‘nokogiri’ require ‘curb’ require ‘json’ # override capistrano defaults set :use_sudo, false set :normalize_asset_timestamps, false # some constant of mine set :my_constant, “foo_bar” 之后,我可以在命名空间内的函数或任务中访问我的常量,例如: namespace :mycompany do def some_function() run “some_command #{my_constant}” end desc <<-DESC some task description DESC task :some_task do run "some_command #{my_constant}" end end 但是,如果我在类中使用常量,如下所示: namespace :mycompany do […]

在能够使用Capistrano进行部署之前,是否需要在我的服务器上手动安装Bundler?

标题基本概括了所有内容。 我刚刚使用Ruby 1.9.2设置了我的Web服务器。 这是一个干净的安装 – 尚未安装任何gem。 另外,我刚刚为我的Rails应用程序配置了Capistrano。 当我运行cap deploy ,它失败并显示以下错误消息: *** [err :: bogusip.com] bash: bundle: command not found 鉴于我所做的就是将Ruby 1.9.2安装到我的服务器上,此时Bundler不存在。 Capistrano是应该为我安装Bundler gem还是我自己应该这样做?

如何在Capistrano部署中将我的产品图像符号链接到生产中?

在这里,我收到了一个问题的解决方案,每当我使用Capistrano部署我的Spree Commerce应用程序时,我的图像被删除(它们仍然存在,但文件夹名称错误),我必须通过管理员再次添加它们。 在这个Google小组和问题的答案中 ,都说symlinking是解决方案。 您需要确保从Capistrano共享目录中符号链接RAILS_ROOT / public / spree目录,而不是每次部署时都重新创建。 如果未发生此符号链接,则每次部署时图像都将丢失。 我尝试了一些东西,但我没有设法将符号链接到我的图像。 在服务器上,它们位于文件夹/ p​​ublic / spree / products中。 我试过的是这个: namespace :deploy do task :start do ; end task :stop do ; end task :symlink_shared do run “ln -nfs #{shared_path}/shared/spree/ #{release_path}/public/spree/”” end end 但这不起作用。 我不知道我必须输入哪条共享路径。 我希望有人可以帮助我或提供解释链接。

Capistrano错误:无法连接到ssh-agent

我正在使用带有Capistrano部署的Bedrock。 当我使用命令bundle exec cap staging deploy:check我收到了身份validation错误: … D, [2015-05-09T15:39:53.878464 #15636] DEBUG — net.ssh.authentication.session[1e34a58]: trying publickey D, [2015-05-09T15:39:53.878464 #15636] DEBUG — net.ssh.authentication.agent[1e30d2c]: connecting to ssh-agent E, [2015-05-09T15:39:53.879447 #15636] ERROR — net.ssh.authentication.agent[1e30d2c]: could not connect to ssh-agent E, [2015-05-09T15:39:53.879447 #15636] ERROR — net.ssh.authentication.session[1e34a58]: all authorization methods failed (tried publickey) cap aborted! SSHKit::Runner::ExecuteError: Exception while executing as deploy@SERVER_IP: […]

Capistrano 3.0 – 现在如何安全地提示输入密码?

在3.0之前有一种方法可以做到这一点: # … set :mysql_password, proc { Capistrano::CLI.password_prompt “Gimme remote database server password. Don’t worry, I won’t tell anyone: ” } # … namespace :db do desc ‘Dump remote database’ task :dump do run “mysqldump -u #{mysql_user} -p #{mysql_database} > ~/#{mysql_database}.sql” do |channel, stream, data| if data =~ /^Enter password:/ channel.send_data “#{mysql_password}\n” end end end […]

通过脚本设置rvm设置EC2服务器

我正在寻找一种方法来安装rvm,安装特定的ruby版本(使用rvm)并将此安装的ruby版本设置为默认值。 在我安装rvm之前,我必须安装gcc和其他一些非常基本的软件包。 到目前为止我尝试了什么: 1)使用net / ssh 我必须模拟一个伪tty,以便能够sudo一些命令,到目前为止,我无法弄清楚,如何从一个不成功的完整的一个告诉成功完整的命令完成。 在安装rvm之后,我偶然发现使用rvm的问题(“rvm不是函数”,错误消息,导致无法设置默认的ruby版本)。 2)使用capistrano 在ssh输出中插入换行符,以便每次都在新行中打印一个进度条,进行一些处理。 这是我可以忍受的东西。 与rmv相同的问题,我能够安装rvm,但我无法设置默认值: rvm –default use 1.9.2例如。 没有错误消息,但是当我稍后登录时,没有设置默认值, ruby -v显示旧的系统ruby。 3)使用capistrano和rvm-capistrano 现在我遇到了问题,我在安装rvm之前尝试执行的任务失败了,因为似乎有一些魔法可以摆弄shell默认值: * executing “sudo -p ‘sudo password: ‘ yum install –assumeyes git gcc-c++ autoconf automake make patch zlib-devel libtool bzip2-devel” servers: [“ec2-54-247-142-214.eu-west-1.compute.amazonaws.com”] [ec2-54-247-142-214.eu-west-1.compute.amazonaws.com] executing command ** [out :: ec2-54-247-142-214.eu-west-1.compute.amazonaws.com] bash: /home/ec2-user/.rvm/bin/rvm-shell: No such file or […]

Capistrano返回错误的release_path

我有一个关于capistrano版本3.2.1的问题。 在我的deploy.rb文件中,我使用以下行: set :theme_path, “#{release_path}/web/app/themes/myproject” 变量release_path没有显示到最新的release文件夹,比如应该说201409151420 ,但是它指向文件夹current ,所以输出是: DEBUG[68031037] Command: cd /var/www/myproject/current/web/app/themes/myproject && ( WP_ENV=staging /usr/bin/env npm install –silent ) 输出应该是: DEBUG[68031037] Command: cd /var/www/myproject/201409151420/web/app/themes/myproject && ( WP_ENV=staging /usr/bin/env npm install –silent ) 有谁知道,为什么release_path变量没有显示到正确的文件夹? 谢谢您的帮助。

Capistrano 3:在任务中使用服务器自定义变量

我有多阶段多服务器设置,在我的任务中我需要使用服务器名称,例如在stagin.rb我有: set :stage, :staging # Define servers server ‘xxx.xx.xx.xxx’, user: ‘deploy’, roles: %w{app}, name: ‘app1’ server ‘xxx.xx.xx.yyy’, user: ‘deploy’, roles: %w{app}, name: ‘app2’ 我想在我的任务中使用“name”变量: task :configure do on roles(:app), in: :parallel do # how do I get server name here? end end

资产管道:使用Capistrano部署我的Rails 3.1应用程序时出现问题

我正在使用Ruby on Rails 3.1.0和Capistrano。 我有一个问题,使应用程序在生产模式下工作(远程机器运行Ubuntu 10.4 – 我的本地机器是运行Snow Leopard 10.6.7的MacOS)。 当我使用Capistrano部署时,我收到此错误: uninitialized constant Rake::DSL 当我尝试访问网页时出现此错误: ActionView::Template::Error (application.css isn’t precompiled) 为了使应用程序在远程计算机上以生产模式工作,我应该怎么做? 在我的Capfile文件中,我有: # Uncomment if you are using Rails’ asset pipeline load ‘deploy/assets’ 在我的Gemfile文件中,我有: group :production do gem ‘execjs’ gem ‘therubyracer’ end 如果我评论load ‘deploy/assets’我不再得到uninitialized constant Rake::DSL但我仍然得到ActionView::Template::Error (application.css isn’t precompiled)错误。

Capistrano迁移部署

我有一个关于Ruby on Rails和Capistrano部署的问题。 我做的第一件事是使用以下方法部署我的Rails应用程序: cap deploy:update 当我有迁移时,我尝试运行Capistrano命令: cap deploy:migrations 我收到错误: Could not find rake-0.9.2 in any of the sources 我必须SSH到服务器的当前文件夹并手动运行 rake RAILS_ENV=production db:migrate 通过迁移运行每个部署显然是一个巨大的痛苦。 我究竟做错了什么? 谢谢您的帮助。