我正在製作小型Sinatra應用程序並試圖將它放在Heroku服務器上。嘗試做Heroku時出現錯誤運行rake db:migrate
當我在Heroku上運行rake db:migrate時,Heroku發出錯誤「Gem :: LoadError:指定'sqlite3'用於數據庫適配器,但該gem未加載。將gem 'sqlite3'
添加到您的Gemfile中(並確保其版本爲至少需要ActiveRecord)「。 。
雖然我在我的gem文件中有開發組中的sqlite3 gem。
source 'http://rubygems.org'
ruby '2.3.1'
gem 'sinatra'
gem 'activerecord', :require => 'active_record'
gem 'sinatra-activerecord', :require => 'sinatra/activerecord'
gem 'sqlite3', :group => :development
gem 'rake'
gem 'require_all'
gem 'thin'
gem 'shotgun', :group => :development
gem 'pry'
gem 'bcrypt'
gem "tux"
gem 'rack-flash3'
group :test do
gem 'rspec'
gem 'capybara'
gem 'rack-test'
gem 'database_cleaner', git: 'https://github.com/bmabey/database_cleaner.git'
end
group :production do
gem 'pg'
gem 'rails_12factor'
end
另外,請參見下面的環境文件
require 'bundler/setup'
require 'rack-flash'
Bundler.require
configure :development do
ENV['SINATRA_ENV'] ||= "development"
ActiveRecord::Base.establish_connection(
:adapter => "sqlite3",
:database => "db/#{ENV['SINATRA_ENV']}.sqlite"
)
end
configure :production do
db = URI.parse(ENV['DATABASE_URL'] || 'postgres://localhost/mydb')
ActiveRecord::Base.establish_connection(
:adapter => db.scheme == 'postgres' ? 'postgresql' : db.scheme,
:host => db.host,
:username => db.user,
:password => db.password,
:database => db.path[1..-1],
:encoding => 'utf8'
)
end
require_all 'app'
我也沒有 「捆綁安裝--without生產」,在Github上推的一切。有人有任何可能的解決方案?
非常感謝!
我認爲你需要從sqlite3 gem中刪除'group => development',這樣它纔會加載到你的生產環境中。 – moveson
在開發環境中安裝PostgreSQL會不會更簡單(從長遠來看更可靠),以便您可以使用相同的堆棧進行開發,測試和部署? –