在将我的Rails 3应用程序部署到Heroku并且gems文件中定义了sqlite3时,我遇到了与Heroku deployment issue中描述的情况相同的问题。
/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:in `require': 找不到文件 -- sqlite3 (LoadError)
有什么线索吗? Ruby论坛中定义的解决方案有效,只是我想知道为什么这样做。
在将我的Rails 3应用程序部署到Heroku并且gems文件中定义了sqlite3时,我遇到了与Heroku deployment issue中描述的情况相同的问题。
/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:in `require': 找不到文件 -- sqlite3 (LoadError)
有什么线索吗? Ruby论坛中定义的解决方案有效,只是我想知道为什么这样做。
确保在生产环境中不要在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无法工作。
对于较新版本的Sqlite,您可以使用以下内容:
group :development, :test do
gem 'sqlite3'
end
Heroku不支持SQLite。根据Heroku文章在Heroku上使用SQLite:
虽然易于使用,但SQLite并不适用于生产级数据库。相反,Heroku提供了生产级PostgreSQL数据库服务。不要忘记删除以下部分
忽略默认的SQLite数据库。
/db/*.sqlite3
从.gitignore
文件中。如果您使用“rails new your-application-name”命令创建,则会创建此声明。