【问题标题】:Capistrano migrates to development databaseCapistrano 迁移到开发数据库
【发布时间】:2015-05-24 19:03:47
【问题描述】:

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

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

我的文件:

部署.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"

生产.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

【问题讨论】:

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


    【解决方案1】:

    您的deploy.rb 中似乎缺少rails_env,请尝试添加此行:

    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 中,因为我知道我不想在那里使用除生产之外的任何东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-04
      相关资源
      最近更新 更多