Разверните приложение rails на производстве, почему все еще используется подготовка среды? - PullRequest
0 голосов
/ 20 июня 2019

Я развернул мое приложение rails в рабочей среде, но почему оно все еще использует промежуточную среду, мое приложение rails все еще подключается к промежуточной базе данных, URL ссылки все еще переходит к промежуточному приложению, например, для подтверждения по электронной почте, что оно должно подключиться к производственному приложению.

Я использую Capistrano, Puma, мой сервер с помощью nginx

Чего-то не хватает ???

Это код database.yml

development:
  encoding: utf8mb4
  collation: utf8mb4_unicode_ci
  adapter: mysql2
  database: database_development
  pool: 5
  username: root
  password: 123456

staging:
  host: 127.0.0.1
  encoding: utf8mb4
  collation: utf8mb4_unicode_ci
  adapter: mysql2
  database: database_staging
  pool: 8
  username: root
  password: <%= ENV['RAILS_DB_PW'] %>

test:
  encoding: utf8mb4
  collation: utf8mb4_unicode_ci
  adapter: mysql2
  database: database_test
  pool: 5
  username: root
  password: 123456

production:
  encoding: utf8mb4
  collation: utf8mb4_unicode_ci
  adapter: mysql2
  database: database_production
  pool: 60
  username: root
  password: <%= ENV['RAILS_DB_PW'] %>

Это код продукции. Rb

set :application, 'my rails app'
set :stage, :production
set :rails_env, 'production'

set :deploy_to,  "/var/#{fetch(:user)}/#{fetch(:application)}"
set :server_name, "my-rails-app.com"

set :delayed_job_args, "-n 4"

# http://stackoverflow.com/questions/21036175/how-to-deploy-a-specific-revision-with-capistrano-3
set :branch, ENV["REVISION"] || ENV["BRANCH_NAME"] || 'master'

role :app, %w{deploy@1.2.3.4}
role :web, %w{deploy@1.2.3.4}
role :db,  %w{deploy@1.2.3.4}
server '1.2.3.4', user: 'deploy', roles: %w{web app}

Это код deploy.rb


lock "~> 3.11.0"

set :application,       "my-rails-app"
set :repo_url,          "git@github.com:user/my-rails-app.git"
set :user,              'deploy'
set :puma_env,          'staging'
set :puma_threads,      [1, 16]
set :puma_workers,      1

set :rvm_ruby_version, '2.4.1'

set :ssh_options, { forward_agent: true, auth_methods: %w(publickey) }

set :deploy_via,      :remote_cache

set :ssh_options,   { forward_agent: true, auth_methods: %w(publickey) }

set :linked_files, %w{.env config/master.key config/database.yml}
set :linked_dirs, %w{log tmp/cache tmp/sockets tmp/export tmp/pids public/assets public/uploads config/locales/field_translation/medical_category}

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

namespace :deploy do
  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      execute :touch, release_path.join('tmp/restart.txt')
    end
  end

  after :publishing, :restart

  desc 'Initial Deploy'
  task :initial do
    on roles(:app) do
      before 'deploy:restart', 'puma:start'
      invoke 'deploy'
    end
  end

end

Спасибо 101

Ответы [ 4 ]

0 голосов
/ 05 июля 2019

в моем случае мне пришлось бежать:

cap production puma:config
0 голосов
/ 20 июня 2019

У меня нет опыта работы с этими инструментами, но когда вы используете set :rails_env, 'production', вы можете проверить, существует ли переменная окружения с именем RAILS_ENV, а не rails_env? Потому что Rails ожидает переменную окружения с именем RAILS_ENV.

0 голосов
/ 20 июня 2019

Это должно быть из-за puma_env.Вы установили puma_env в качестве промежуточного этапа в deploy.rb.В файле production.rb он должен быть указан ниже:

set :puma_env,          'production'
0 голосов
/ 20 июня 2019

В deploy.rb добавить,

set :rails_env, 'production'
...