質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

Q&A

解決済

2回答

2083閲覧

【Rails6】capistranoでstaging環境を作りたい

takaaa

総合スコア7

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

0グッド

0クリップ

投稿2021/07/18 03:08

##したいこと
本番環境にcapistranoを使ってデプロイしていて、追加で新しくEC2を立ててproductionと全く同じstaging環境を構築したい

##試したこと
・credentialsを環境ごとに(development,production)分けているので、staging.keyを作成→secret_base_key以外はproduction.keyと同じ
・environments/staging.rbを作成→production.rbと全く同じ
・capistranoのデプロイをproductionとstagingを分けるためにdeploy/staging.rbを作成

##解決したいこと
bundle exec cap staging deploy実行後にprecompileでエラーが出てきてデプロイできない

log/capistrano.log

config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly: * development - set it to false * test - set it to false (unless you use a tool that preloads your test environment) * production - set it to true rake aborted! ActiveRecord::AdapterNotSpecified: The `staging` database is not configured for the `staging` environment. Available databases configurations are: default development test production

deploy.rb

lock "~> 3.15.0" set :application, "xxxx" set :repo_url, "git@github.com:xxxx/xxxx.git" set :rbenv_ruby, File.read(".ruby-version").strip set :nginx_config_name, "#{fetch(:application)}.conf" set :nginx_sites_enabled_path, "/etc/nginx/conf.d" set :branch, ENV["BRANCH"] || "master" set :stages, %(production, staging) set :default_stage, "staging" append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets", "node_modules"

staging.rb

server "xxxxxx", user: "xxxx", roles: %w[app db web] set :rails_env, "staging" set :stage, :staging append :linked_files, "config/credentials/staging.key" set :ssh_options, { keys: %w[~/.ssh/xxxx.pem], forward_agent: true, auth_methods: %w[publickey], }

production.rb

server "xxxxxx", user: "xxxx", roles: %w[app db web] set :rails_env, "production" set :stage, :production append :linked_files, "config/credentials/production.key" set :ssh_options, { keys: %w[~/.ssh/xxxx.pem], forward_agent: true, auth_methods: %w[publickey], }

ログを見たところ、なぜかstaging環境ができていない?と思うのですが、詰まっています。

ご教授よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

作り直したらできました。

投稿2021/07/24 00:32

takaaa

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

log/capistrano.logに答えが書いてあるように思います。

rake aborted! ActiveRecord::AdapterNotSpecified: The `staging` database is not configured for the `staging` environment. Available databases configurations are: default development test production

とのことで、そのまま読むとstaging用のDB設定がdatabase.ymlに存在しないためにエラーになっていることがわかります。

投稿2021/07/18 07:12

yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takaaa

2021/07/18 08:12

回答ありがとうございます。 質問にdatabase.ymlの詳細を載せるのを忘れていたのでこちらで共有いたします。 production: <<: *default database: xxxx_db username: <%= Rails.application.credentials.db_username %> password: <%= Rails.application.credentials.db_password %> host: <%= Rails.application.credentials.db_host %> staging: <<: *default database: xxxx_db username: <%= Rails.application.credentials.db_username %> password: <%= Rails.application.credentials.db_password %> host: <%= Rails.application.credentials.db_host %> productionではこちらで動いているので、全く同じにしています。 デフォルトの環境(development,test,production)とは違い、新しく追加するにはどうすればいいでしょうか。 よろしくお願いいたします。
yu_1985

2021/07/19 05:13

ここではなく、本文中にコードブロックで追記してください。 また、それは抜粋でしょうか?できれば抜粋せずに全部貼ってください。 あと、記載されてないですがconfig/environments/staging.rbの中身はproduction.rbと全く同じで本当に大丈夫ですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問