当我尝试将我的Rails 3应用程序部署到Heroku并且在gems文件中定义了sqlite3时,我遇到了Heroku部署问题中描述的相同场景.
/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:in`requirement':没有要加载的文件--sqlite3(LoadError)
任何线索为什么会这样?在ruby-forum中定义的解决方案有效,我只是想知道为什么.
确保在生产环境中的Gemfile中不包含sqlite:
这是正确的:
source :gemcutter gem 'rails' group :development, :test do gem 'sqlite3-ruby', :require => 'sqlite3' end
这是错的:
source :gemcutter gem 'rails' gem 'sqlite3-ruby', :require => 'sqlite3'
SQLite需要永久可写文件系统.(即您的程序最终需要访问POSIX fopen()和fwrite()API调用特定文件).Heroku不提供永久可写文件系统.因此,SQLite 3将无法正常工作.
由于他们的arhitecture,Heroku只允许postgres,所以没有安装sqlite gem.