Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在capistrano部署后运行迁移_Ruby On Rails_Ruby_Capistrano - Fatal编程技术网

Ruby on rails 在capistrano部署后运行迁移

Ruby on rails 在capistrano部署后运行迁移,ruby-on-rails,ruby,capistrano,Ruby On Rails,Ruby,Capistrano,我正在尝试使用capistrano学习部署。我希望将代码部署到本地计算机中的单独文件夹中,并在部署后运行迁移。 项目中使用的capistrano宝石如下 capistrano (3.4.0) capistrano-bundler (1.1.4) capistrano-ext (1.2.1) capistrano-rails (1.1.3) 该应用程序使用ruby 2.1和rails 4.1 部署文件如下所示 require 'capistrano/rails/migrations' lock

我正在尝试使用capistrano学习部署。我希望将代码部署到本地计算机中的单独文件夹中,并在部署后运行迁移。 项目中使用的capistrano宝石如下

capistrano (3.4.0)
capistrano-bundler (1.1.4)
capistrano-ext (1.2.1)
capistrano-rails (1.1.3)
该应用程序使用ruby 2.1和rails 4.1 部署文件如下所示

require 'capistrano/rails/migrations'
lock '3.4.0'

set :application, 'capistrano_study'
set :repo_url, 'https://github.com/xxxxxx/capistrano_study.git'

# config valid only for current version of Capistrano
set :stages, ["staging", "production"]
set :default_stage, "staging"
set :user, "prajeesh"
after "deploy:updated", "deploy:migrate"
namespace :deploy do
  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
      # Here we can do anything such as:
      # within release_path do
      #   execute :rake, 'cache:clear'
      # end
    end
  end
end
staging.rb文件如下所示

server 'xx.x.x.xxx', user: 'prajeesh', roles: %w{app db web}, my_property: :my_value
set :deploy_to, "/home/prajeesh/Desktop/projects/capistrano_staging"
Database.yml

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: cap_test_staging
  pool: 5
  username: root
  password: xxxxx
#  socket: /var/run/mysqld/mysqld.sock




staging:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: cap_test_staging
  pool: 5
  username: root
  password: xxxxx
当我运行命令cap staging:deploy时,部署工作正常。问题是部署后迁移没有运行

有人知道如何解决这个问题吗

编辑:

这就是我得到的错误

INFO [175f4b0b] Running /usr/bin/env rake db:migrate as 

prajeesh@xx.x.x.xxx
DEBUG [175f4b0b] Command: cd /home/prajeesh/Desktop/projects/capistrano_staging/current && ( RAILS_ENV=development /usr/bin/env rake db:migrate )
DEBUG [175f4b0b]    rake aborted!
DEBUG [175f4b0b]    

cannot load such file -- bundler/setup
如果我直接从项目路径运行命令RAILS_ENV=development/usr/bin/ENV rake db:migrate,迁移正在运行,但通过capistrano它不起作用


任何帮助都将不胜感激。

嘿,您应该运行以下命令以使其运行命令:

cap deploy:migrate
要让它运行,您可以在这里看到

为自动化迁移而更新:

after "deploy:update_code", "deploy:migrate"

进入文件
config/deploy.rb。

您应该在CAP文件中要求
capistrano/rails/migrations
,如中所述。它会起作用的。

如果你在Capistrano 3,我会的

set:migration\u role,:app
除了将
require'capistrano/rails/migrations'
添加到我的
deploy.rb
文件之外


(来源:)

这是否意味着我无法自动执行此操作?PS:我运行了命令cap staging:deploy——跟踪输出如下*调用staging(第一次)**执行staging**调用加载:默认值(第一次)**执行加载:默认值**调用部署:设置轨道环境(第一次)**执行部署:设置轨道环境**调用部署:迁移(第一次)**Invoke deploy:set_rails\u env**Execute deploy:migrate仍然表未更新更新答案。你可以在我原来的帖子中看到,我已经在用这个了。在“deploy:updated”、“deploy:migrate”之后,我说将其添加到Capfile,而不是deploy文件。现在我得到以下错误。rake标准:rake中止!无法加载这样的文件--bundler/setup因为这是学习过程的一部分,所以我正在尝试将其部署到本地计算机中的单独文件夹中。为了说明清楚,请考虑我有一个名为PRJ1的文件夹。此文件夹包含部署脚本,该脚本尝试将代码部署到同一台计算机中的单独文件夹中。因此,我从项目路径“prj1”运行部署脚本。然后我得到了上面提到的错误。检查您是否有最新的捆绑程序可从您部署到的目录访问。还要检查GEM_路径是否指向您正在使用的正确Ruby版本。