0

小さなRailsアプリケーションをローカルに構築し、AWS Elastic Beanstalkに展開しようとしています。AWS Elastic BeanstalkでRailsアプリケーションのデータベースをシードする方法

これは、私は、次のされているガイドです:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Ruby_rails.html

展開が成功したが、データベースの播種は、私の静的リスト値のすべてが空であるので、発生しませんでした。

"理想的な"解決策ではないと思いますが、私は手動でデータベースをSSHingによってEBインスタンスにシードしようとしました。

eb ssh 
cd /var/app/current/ 
rake db:seed 

と、結果は次のとおりです。

[[email protected] current]$ rake db:seed 
Rails Error: Unable to access log file. Please ensure that /var/app/current/log/production.log exists and is writable (ie, make it writable for user and group: chmod 0664 /var/app/current/log/production.log). The log level has been raised to WARN and the output directed to STDERR until the problem is fixed. 
    ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations" 
    (0.1ms) begin transaction 

... 

(0.1ms) rollback transaction 
rake aborted! 
ActiveRecord::StatementInvalid: SQLite3::ReadOnlyException: attempt to write a readonly database: INSERT INTO "users" ("first_name", "last_name", "email", "encrypted_password", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?) 
/var/app/current/db/seeds.rb:9:in `<top (required)>' 
SQLite3::ReadOnlyException: attempt to write a readonly database 
/var/app/current/db/seeds.rb:9:in `<top (required)>' 
Tasks: TOP => db:seed 
(See full trace by running task with --trace) 

これを行うための適切な方法は何ですか?

ありがとうございます!

+0

'rake db:seed'はデフォルトでdevelopment envを実行するので、あなたは' RAILS_ENV = production rake db:seed'を実行します! –

+0

提案のおかげでヒュウ。私はRAILS_ENV = production rake db:seedを試したところ、まったく同じ応答を受け取った。他の考え? –

答えて

2

両方のエラー(Unable to access log fileattempt to write a readonly database)は、ファイルへのアクセス権が原因です。

EC2インスタンスにssh接続すると、通常はcapistrano deployディレクトリへの書き込みアクセス権を持たないユーザーとしてログインします。 (読み込みアクセス権があるので、ファイルを見ることができますが、書き込みはできません。したがって、ログを書き込んだり、新しいsqliteデータベースファイルを作成することはできません。

-

sudo -u app env PATH=$PATH RAILS_ENV=production bundle exec rake db:seed 

(あるいは単にrootとしてコマンドを実行するためにそれを残しての変更はどんなユーザ名に「-uアプリが」あなたのアプリがのように実行します):あなたは別のユーザーとして熊手を実行するためにsudoを使用することができます

+0

これはうまくいった。フォローアップとして、新しいバージョンのアプリを導入するたびにこれを再実行する必要がありますか? –

+0

いいえ!デプロイしたら、データベースを再配給する必要はありません(デプロイメント間でデータベースが保持されるため、データを失うことはありません)。 – gmcnaughton

+0

ありがとうございました。 –

1

RAILS_ENV=production bundle exec rake db:seed

を試してみてくださいそれは、コマンドデシベルですくいスクリプトを実行します。現在のバンドルのコンテキストでシード。

関連する問題