2017-05-05 25 views
0

小さなSinatraアプリケーションを作成してHerokuサーバーに入れようとしています。Herokuを実行しようとするとエラーが発生するrake db:migrate

私はHeroku run rake db:migrateを実行しますが、Herokuはデータベースアダプタに「Gem :: LoadError:Specified 'sqlite3」というエラーを表示していますが、Gemがロードされていません.を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 

また、私はまた、 "バンドルが生産を--withoutインストール" とのGithub上のすべてを押した

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' 

環境ファイルの下に参照してください。誰もが可能な解決策を持っていますか?

ありがとうございます!

+0

sqlite3 gemから 'group => development'を削除して、実稼働環境にロードする必要があると思います。 – moveson

+0

同じスタックを使って開発、テスト、デプロイするために、開発環境にPostgreSQLをインストールするのは簡単ではないでしょうか? –

答えて

0

エラーは、ご使用のgemfileのgem 'sqlite3'行にgroup => developmentがあることに起因します。

あなたが理解する必要があるのは、Herokuサーバがどのような環境を使用しているかです。

確認するには、コマンドラインからheroku run console -a your-app-nameを実行してください(Heroku CLIがインストールされている必要があります)。

は今、これらのコマンドを実行した結果がgroup => developmentrake db:migrateがHerokuのではなく、あなたの地元のdevの環境に失敗の原因となっているなどの理由を理解するのに役立つはずですSinatra::Base.development?またはSinatra::Base.production?

を実行します。

関連する問題