【问题标题】:heroku db:push sqlite://mydatabase.db errorheroku db:push sqlite://mydatabase.db 错误
【发布时间】:2013-01-04 14:05:11
【问题描述】:

**当我执行“heroku db:push sqlite://mydatabase.db”时,我遇到了 Ruby + Sinatra + Sqlite3 + Heroku 的问题:

当我这样做时:“heroku db:push sqlite://anotador.db”

控制台日志:

2013-01-21T12:37:11+00:00 app[web.1]: Errno::ENOENT - No such file or directory - /app/views/home.erb:
2013-01-21T12:37:11+00:00 app[web.1]:   /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:572:in `erb'

我的 anotador.rb :

require 'rubygems'  
require 'sinatra'  
require 'data_mapper'

DataMapper::setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/anotador.db")  
class Nota  
  include DataMapper::Resource  
  property :id, Serial  
  property :content, Text, :required => true  
  property :complete, Boolean, :required => true, :default => false  
  property :created_at, DateTime  
  property :updated_at, DateTime  
end  
DataMapper.finalize.auto_upgrade! 

我的 GemFile:

source :rubygems
gem 'sinatra'
gem 'data_mapper' 
gem 'rack-flash'
gem 'sinatra-redirect-with-flash'
gem 'builder'
gem 'dm-postgres-adapter', :group => :production
gem 'dm-sqlite-adapter', :group => :development
gem 'thin'

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

在命令行中:

$ bundle
$ git init 
$ git add .
$ git commit -m "comentario" 
$ heroku create nombreAPP --stack cedar
$ git push heroku master 

$ heroku addons:add heroku-postgresql:dev
$ heroku pg:promote <DATABASE_URL>  
$ heroku db:push sqlite://anotador.db 

我知道 Heroku 不使用 Postgres 和 SQLite

但 Heroku 有能力移动数据库并使用 SQLite 到 Postgres,在此链接中举例说明:

https://devcenter.heroku.com/articles/ruby # using-a-sql-database

我在开发中使用 sqlite3,在生产中使用 Postgres

在 GemFile 中:

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

这个链接有一个例子:

http://yamilurbina.com/post/4854924459/deploying-a-sinatra-datamapper-sqlite-app-to-heroku

【问题讨论】:

  • 完整的错误堆栈跟踪会有所帮助
  • 请问很明显,但是当您运行 git ls-files | grep home 时,是否有一个名为 views/home.erb 的文件?
  • 您显示的错误看起来像是来自正常请求 (web.1),而不是 db:push 的结果,并且说 Sinatra 找不到模板文件 @987654334 @ - 与数据库无关。运行db:push 后立即收到什么消息?
  • 或者更好的副本?:Push an SQLite database to Heroku with taps?.

标签: ruby sqlite heroku sinatra


【解决方案1】:

据我所知,您不能在 Heroku 上使用 SQLite3。您可以改用 Postgres 或 Mysql 数据库。

所以当你说

heroku db:push sqlite://mydatabase.db

你不应该那样做。它不起作用,因为 SQLite Gem 在 Heroku 上不可用。 db:push 是什么?是一些 rake 任务吗?我想您仍然需要将其指定给 Heroku。

【讨论】:

  • 我认为 Ck- 是对的,AFAIK 你将无法将 Sqlite 数据库推送到 Heroku,但是你可以将 postgres 数据库从 Heroku 拉到本地 SQLite。我从未尝试过相反的方法。
  • 我知道 Heroku 不使用 Postgres 和 SQL 但 Heroku 有能力移动数据库并使用 SQL 到 Postgres 在此链接中举例说明:devcenter.heroku.com/articles/ruby # using-a-sql-database
  • 您确定错误消息是特定于 sqlite 的吗? /app/views/home.erb 正在抄袭,你能验证数据库是否有数据吗?
  • 没有创建我的数据库 Prosgress 但没有数据。我在开发中使用 sqlite3,在生产中使用 Postgres。类似的例子这个链接yamilurbina.com/post/4854924459/…
  • +1,Ck 是正确的,db:push 做了什么究竟? IMO,您不使用 Postgres 进行开发也是自找麻烦,现在很容易设置它,无论是从 Heroku 安装程序还是 Postgres 安装程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-30
相关资源
最近更新 更多