0

我在本地構建了一個小型Rails應用程序,並試圖將其部署到AWS Elastic Beanstalk。如何爲AWS上的Rails應用程序創建數據庫Elastic Beanstalk

這是我一直在下面的指南:

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

部署是成功的,但並沒有出現數據庫的播種所以我所有的靜態列表值都是空的。

儘管我不認爲這是「理想」的解決方案,但我確實嘗試通過SSH將數據庫手動播種到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

你會運行'RAILS_ENV =生產rake db:seed',因爲'rake db:seed'將在默認情況下運行開發環境! –

+0

感謝Hieu的建議。我剛剛嘗試過RAILS_ENV =生產rake db:seed並收到完全相同的響應。任何其他想法? –

回答

2

這兩個錯誤(Unable to access log fileattempt to write a readonly database)均歸因於文件訪問權限。

當您登錄到EC2實例時,通常會以不具有對capistrano部署目錄的寫入訪問權的用戶身份登錄。 (你有讀權限,所以你可以看到文件,但不能寫 - 所以你不能寫日誌或創建一個新的sqlite數據庫文件)。

您可以使用sudo來運行rake作爲另一個用戶:

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

(更改「-u應用」到任何用戶名您的應用程序形式運行 - 或離開它只是運行命令以root身份)

+0

這很好。作爲後續,每次我部署新版本的應用程序時,是否需要重新運行? –

+0

不!一旦部署完成,你永遠不需要爲你的數據庫重新分類(因爲數據庫將在部署之間持續存在 - 否則你會一直丟失你的所有數據!) – gmcnaughton

+0

謝謝,完全是一個好點:) –

1

嘗試 RAILS_ENV=production bundle exec rake db:seed

它執行與該命令分貝耙腳本:種子在當前捆綁的上下文中。

相關問題