Capistrano迁移到开发数据库

时间:2015-05-24 19:03:48

标签: ruby-on-rails-4 deployment production-environment capistrano3

我有一个奇怪的问题......我使用Capistrano部署我的应用程序(使用pagespeed,nginx,unicorn)。奇怪的是我的应用程序在服务器上的生产数据库上运行(是正确的),但是Capistrano将所有迁移到服务器上的DEVELOPMENT数据库(有2个数据库,据我所知,应该只有生产数据库和所有操纵应该是它)...我不明白为什么......

我不明白......为什么它试图在我的服务器上创建开发数据库? ActiveRecord :: NoDatabaseError:致命:数据库" foreignernetwork_development"不存在(在我手动创建它之前,但现在我看到的是我的问题,我试图找出如何让它成为foreignernetwork_production)...你能告诉我什么可能是一个原因吗?

我的档案:

deploy.rb

set :application, "[FILTERED]"

set :log_level, :info

set :scm, :git
# important! https, not ssh
set :repo_url,  "https://github.com/myname/[FILTERED].git"
set :deploy_to, "/var/www/[FILTERED]"
set :user, "deployuser"
set :keep_releases, 5

set :ssh_options, {
  forward_agent: true,
  # important! your current ssh port
  port: 12531
}

set :rbenv_type, :system
#important! change to your current version
set :rbenv_ruby, '2.2.2'
set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)}
RBENV_VERSION=#{fetch(:rbenv_ruby)} #{fetch(:rbenv_path)}/bin/rbenv exec"
set :rbenv_map_bins, %w{rake gem bundle ruby rails}
set :rbenv_roles, :all

#set :rbenv_custom_path, '/usr/local/rbenv/bin/rbenv'
#set :use_sudo, true

SSHKit.config.command_map[:rake]  = "bundle exec rake"
SSHKit.config.command_map[:rails] = "bundle exec rails"

set :linked_files, %w{.env}
set :linked_dirs, %w{bin log tmp public/assets public/sites public/system}

set :file_permissions_roles, :all
set :file_permissions_paths, ["/usr/local/rbenv"]
set :file_permissions_users, ["deployuser"]
set :file_permissions_chmod_mode, "0770"

after "deploy:updated", "deploy:set_permissions:chmod"

production.rb

set :stage, :production


server "[FILTERED].com", user: "deployuser", roles: %w{web app db}
# Important! set your branch from git!
set :branch, "master"
set :nginx_server_name, "[FILTERED].com"

set :nginx_use_spdy, false
set :nginx_ssl_certificate, "[FILTERED].pem"
set :nginx_ssl_certificate_key, "[FILTERED].key"

set :nginx_enable_pagespeed, true
set :nginx_pagespeed_enabled_filters, "lazyload_images"

set :unicorn_workers, 2

1 个答案:

答案 0 :(得分:0)

rails_env中的遗漏deploy.rb看起来似乎没有,请尝试添加此行:

set :rails_env, 'production'

您可以在capistrano / rails Github页面https://github.com/capistrano/rails

的README中找到

它的作用基本上是将RAILS_ENV环境变量作为服务器上大多数(如果不是全部)rails命令的前缀。

您也可以将其添加到服务器上的点文件(例如~/.bashrc):

export RAILS_ENV=production

或者如果你想为服务器上的所有用户帐户设置它,请将其添加到/etc/environment(无论如何都适用于Debian):

RAILS_ENV=production

注意:您未将export放入/etc/environment

就我个人而言,我在服务器上的deploy.rb/etc/environment设置了它,因为我知道我从不想在那里使用任何其他产品。