簡體   English   中英

Ruby on Rails Heroku錯誤

[英]Ruby on Rails Heroku Error

我只是試圖將我的應用程序推送到heroku,但是當我去運行heroku run rake db:migrate時,它說:“目前無法一次運行。請稍后再試。” 關於我能做什么的任何想法?

從Heroku網站本身...

“ * SQLite在內存中運行,並將其數據存儲備份到磁盤上的文件中。雖然這種策略很適合開發,但Heroku的Cedar堆棧具有一個臨時文件系統。您可以對其進行寫入,也可以從中讀取,但是內容如果您要在Heroku上使用SQLite,則會每24小時至少丟失一次整個數據庫。

即使Heroku的磁盤具有持久性,運行SQLite仍然不是一個很好的選擇。 由於SQLite不能作為服務運行,因此每個dyno都將運行單獨的運行副本。 這些副本中的每一個都需要它們自己的磁盤支持的存儲。 這意味着,由於磁盤未同步,因此為您的應用程序提供動力的每個dyno都將具有不同的數據集。 您可以將應用配置為在Postgres上運行,而不是在Heroku上使用SQLite。*“

其他疑難解答...

即使不在Gemfile中也獲得SQLite錯誤

如果您已經從Gemfile中刪除了gem sqlite3行,並且在部署到Heroku時仍然出現錯誤,則可能是您正在使用的另一個gem將sqlite3作為依賴項。 為了幫助找到此依賴關系的來源,請在您的Gemfile.lock查找sqlite3 找到具有sqlite3作為依賴項的gem並將其從您的Gemfile中刪除。 完成此運行包安裝后,請確保sqlite3在您的Gemfile.lock不再存在。

在PostgreSQL上運行Rails

PostgreSQL數據庫可被任何語言和框架使用, 本節介紹如何通過Ruby on Rails框架連接到它。 在生產中使用與開發中相同的數據庫很重要,因此您將需要在本地安裝PostgreSQL數據庫。


如果要啟動新的Rails應用程序,可以通過運行以下命令將postgres為默認數據庫:

rails new -d postgresql

這將在您的Gemfile中安裝pg gem,並在本地編寫正確的config / database.yml配置。

如果您有一個預先存在的Rails應用程序,或者運行了沒有-d postgresql標志的rails new命令,則可以手動轉換您的應用程序。

首先打開您的Gemfile並刪除以下行:

gem 'sqlite3'

替換為此行:

gem 'pg'

然后運行捆綁安裝。

接下來,您將需要轉換config / database.yml。 打開現有文件,可能看起來像這樣:

development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: sqlite3
  database: db/production.sqlite3
  pool: 5
  timeout: 5000


您將需要從以下位置更改適配器

adapter: sqlite3

對此:

adapter: postgresql


請注意,適配器名稱是postgresql而不是postgrespg 您還需要將database:更改為自定義名稱。 最終版本可能如下所示:

development:
  adapter: postgresql
  database: my_database_development
  pool: 5
  timeout: 5000
test:
  adapter: postgresql
  database: my_database_test
  pool: 5
  timeout: 5000

production:
  adapter: postgresql
  database: my_database_production
  pool: 5
  timeout: 5000

一旦安裝了pg gem並遷移了config/database.yml文件,您將需要創建數據庫並對其進行任何現有的遷移:

rake db:create
rake db:migrate


現在您需要$ git add . $ git commit -m postgres那么您會很高興。 現在,當您使用Rails推送到Heroku時,將提供一個開發級的postgres實例並將其自動連接到您的應用程序。

如果您不使用Rails,則可能需要通過運行以下命令手動添加postgres插件

heroku addons:create heroku-postgresql

這可能意味着您達到了免費的測功機速率限制

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM