2012-10-26 15 views
14

私はちょうどMichael Hartlのruby.railstutorial.orgの本を開始しました。私はマックブックOS X、ターミナル、およびサブライムテキストを使用しています。ヘロクへの展開をテストする時間が来るまで、すべてが計画通りに進んでいます。私はHerokuに接続して$ git push heroku masterコマンドを実行できます。しかし、展開は失敗します。sqlite3 gemエラーのためHerokuのデプロイメントに失敗しました

ここ
Installing sqlite3 (1.3.5) with native extensions 
     Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. 
     /usr/local/bin/ruby extconf.rb 
     checking for sqlite3.h... no 
     sqlite3.h is missing. Try 'port install sqlite3 +universal' 
     or 'yum install sqlite-devel' and check your shared library search path (the 
     location where your sqlite3 shared library is located). 
     *** extconf.rb failed *** 
     Could not create Makefile due to some reason, probably lack of 
     necessary libraries and/or headers. Check the mkmf.log file for more 
     details. You may need configuration options. 
     Provided configuration options: 


An error occurred while installing sqlite3 (1.3.5), and Bundler cannot continue. 
     Make sure that `gem install sqlite3 -v '1.3.5'` succeeds before bundling. 
! 
!  Failed to install gems via Bundler. 
!  
!  Detected sqlite3 gem which is not supported on Heroku. 
!  http://devcenter.heroku.com/articles/how-do-i-use-sqlite3-for-development 
! 
!  Heroku push rejected, failed to compile Ruby/rails app 

は私のGemfileである

source 'https://rubygems.org' 

     gem 'rails', '3.2.8' 

     # Bundle edge Rails instead: 
     # gem 'rails', :git => 'git://github.com/rails/rails.git' 

     group :development, :test do 
    gem 'sqlite3', '1.3.5' 
     end 


     # Gems used only for assets and not required 
     # in production environments by default. 
     group :assets do 
     gem 'sass-rails', '~> 3.2.5' 
     gem 'coffee-rails', '~> 3.2.2' 

     # See https://github.com/sstephenson/execjs#readme for more supported runtimes 
     # gem 'therubyracer', :platforms => :ruby 

     gem 'uglifier', '>= 1.2.3' 
     end 

     gem 'jquery-rails', '2.0.2' 

     group :production do 
    gem 'pg', '0.12.2' 
     end 

     # To use ActiveModel has_secure_password 
     # gem 'bcrypt-ruby', '~> 3.0.0' 

     # To use Jbuilder templates for JSON 
     # gem 'jbuilder' 

     # Use unicorn as the app server 
     # gem 'unicorn' 

     # Deploy with Capistrano 
     # gem 'capistrano' 

     # To use debugger 
     # gem 'debugger' 

私は、生産、開発のためではなく、指定sqlite3のしているので、私はHerokuのは、ちょうどすべて一緒にそれを無視するだろうと思ったが、それはしていないようです事件である。

また

、私は $バンドルが生産

私は一部の人だけでPGをインストールしていることを使用することが提案されたことを知っているが、私は本当にチュートリアルに固執したいを--withoutインストールし使用していますバンドルを作成します可能な限り、私はベンチャーアウトし、別のアプローチを試してみる前に。

私は現時点では少し失われており、ここから進める方法がわかりません。あなたが提供できるどんな助力も、最も感謝しています。 Herokuのは、何らかの理由で、sqlite3の宝石をインストールすることはできません

+0

うわー、ヘルプリンクは、私は、この問題を打ったとき... – Chowlett

+1

は、リンクのアドバイスに従って、代わりのPostgreSQLを使用するよりも多くの助けにならないのです。 – sevenseacat

+1

このセクションをチェックしてくださいhttps://devcenter.heroku.com/articles/building-a-rails-3-application-with-the-memcache-addon#create-your-application – fankt

答えて

21

感謝。しかし、あなたはbundlerに、開発時以外には試してはならないと伝えることができます。あなたのGemfile

、とgem 'sqlite3'を置き換えます。次に

group :development, :test do 
    gem 'sqlite3' 
end 
group :production do 
    gem 'pg' 
end 

Herokuの上バンドラ、productionとして実行されている、それをインストールしようとしません。

+3

Gemfileをコードで更新し、バンドルしてHerokuにデプロイしましたが、私はまだ同じエラーが発生しています。 – xuamox

+0

sqlite3のgem installが成功しました。生産がなくバンドルされていましたが、まだ運がありませんでした。 – xuamox

+0

愚かな私には、代わりに 'pg'宝石を追加するのを忘れました。今はどう? – Chowlett

1

ヘロクでは、あなたのアプリはファイルシステムにアクセスできません。これにはいくつかの理由があります。基本的には、新しいインスタンスを追加する(つまり複数のサーバーを同時に実行する)ことによってアプリのパフォーマンスを拡大することができます。これらのインスタンスは同じ物理マシン上にあることが保証されていませんそのファイルは非常に遅いでしょう。

SQLiteはdb /フォルダ内のファイルにデータベースを格納するだけです。そのため、Herokuと互換性がありません。ヘルプリンクで提案されているように

最良のオプションは、SQLiteのとPostgreSQL(お好みのHerokuののデータベース)の間に、時には微妙な非互換性があるため、離れたSQLiteから移動することであり、あなたが前にデプロイこれを知りたいです生産に!

PostgreSQLをインストールした後(正確にはOSによって異なります)、Gemfileにgem 'pg'を追加してください。

13

私は最終的にHerokuにうまく展開できました。 Herokuサイトの記事を私に指摘してくれたevanc3に感謝します。 Herokuにデプロイする前に私のGemgileアップデートをコミットするのを忘れてしまったようです。だから、ちょうどあなたが出発するときは、Herokuに展開する前に変更をコミットする必要があります。

+0

ありがとう!あなたは私を助けました。 – YoTengoUnLCD

+0

「ありがとうございました!」 "私も!"この有用な記事がロックされるようにコメントしてください! – gangelo

8

Herokuのは、sqlite3のをサポートしていません...

ではなく、あなたのGemfile、利用PG宝石からsqlite3のを削除します。GEMファイルの変更

gem 'pg' #you will have to install postgresql 

重要にごGemfile

gem 'sqlite3' 

に次

変更次の操作を行います。

git add . 
git commit 
git push heroku master 

注意を実行します。あなたはHerokuのために展開することを計画している場合、私はあなたの開発段階でもpostgresを使う方が良いと提案します(installコンピュータのpostgresql)、herokuはpsqlが好きです。

開発用にsqlliteを使用し、Heroku用にpostgresqlを使用する場合は、次のconfigを使用します。 Herokuのは、私はあなたのgemfileに直接sqlite3のを持っていない場合のためのソリューションを持っているとあなたはまだ、このエラーを取得している生産的環境

+0

gitの追加とコミットの部分は本当に私のトリックでした!ありがとう。私はすべての部品を追加しましたが、それらをコミットしていませんでした。 –

0

でアプリケーションを実行するため、

group :development do 
    gem 'sqlite3' #gem to use in development environment 
end 

group :production do 
    gem 'pg'   #gem to use in production environment 
end 

Herokuのはpg宝石を使用します。

ほとんどの場合、依存関係としてsqlite3を使用する宝石があります。これはあなたが知らないうちに宝石を含んでいます。

1)Gemfile.lockに移動し、sqliteを検索します。

2)gemでsqliteを使用している場所を見つけ、gemを開発グループまたはテストグループに移動します。

3)バンドル

関連する問題