更新 - 已解决:我的本地服务器和heroku都无法正常工作。两个主要组件解决了这个问题。
谢谢大家的帮助和支持!在这个学习过程中,知道有人愿意提供帮助是非常宝贵的;因此,我努力记录这个错误/解决方案,以便将来的编码人员少开头。
:(我的应用程序在本地工作,然后我按照指示进行操作 推到Heroku。
我得到了Heroku的超级描述性和安慰性的错误信息:"我们已经 对不起,但出了点问题。"
换句话说,现在我的应用程序无法在本地或在heroku上运行...会 喜欢在你的帮助下解决这个问题。谢谢。
所以我尝试了一些事情(按此顺序):
- 我拿出
gem 'sqlite3'
并将其替换为gem 'pg'
- 在我的gemfile中,包括
ruby '2.0.0'
- heroku rake db:migrate
当我尝试使用rails服务器(在本地测试)时,出现以下错误:
不知何故,在部署到Heroku时,我的Ruby版本与使用2.0.0不一致,而gemfile预计为1.8。
ms.rb:777:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:211:in `activate'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:1056:in `gem'
from /usr/bin/rails:18
Davids-MacBook-Air-6:portfolio davidngo$ rails server
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:777:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:211:in `activate'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:1056:in `gem'
from /usr/bin/rails:18
rvm reinstall ruby 2.0.0
bundle install
#=>当我看到"您的Ruby版本是2.0.0,但您的Gemfile指定为1.8"我知道我的方向是正确的,因为这个错误是超常的/遍布StackOverFlow State changed from starting to complete
2013-08-20T03:29:43.118968+00:00 heroku[run.2135]: Error R99 (Platform error) -> Failed to launch the dyno within 10 seconds
2013-08-20T03:29:43.119187+00:00 heroku[run.2135]: Stopping process with SIGKILL
2013-08-20T03:31:00.784270+00:00 heroku[router]: at=info method=GET path=/ host=shrouded-citadel-6554.herokuapp.com fwd="107.193.213.240" dyno=web.1 connect=2ms service=24ms status=500 bytes=643
2013-08-20T03:31:00.800238+00:00 app[web.1]:
2013-08-20T03:31:00.800238+00:00 app[web.1]: Started GET "/" for 107.193.213.240 at 2013-08-20 03:31:00 +0000
2013-08-20T03:31:00.800238+00:00 app[web.1]:
2013-08-20T03:31:00.802209+00:00 app[web.1]: Processing by CollectionsController#index as HTML
2013-08-20T03:31:00.808688+00:00 app[web.1]: Completed 500 Internal Server Error in 6ms
2013-08-20T03:31:00.810234+00:00 app[web.1]:
2013-08-20T03:31:00.810234+00:00 app[web.1]: WHERE a.attrelid = '"collections"'::regclass
2013-08-20T03:31:00.810234+00:00 app[web.1]: ^
2013-08-20T03:31:00.810234+00:00 app[web.1]: LINE 4: WHERE a.attrelid = '"collections"'::regclass
2013-08-20T03:31:00.810234+00:00 app[web.1]: : SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
2013-08-20T03:31:00.810234+00:00 app[web.1]: FROM pg_attribute a LEFT JOIN pg_attrdef d
2013-08-20T03:31:00.810234+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::Error: ERROR: relation "collections" does not exist
2013-08-20T03:31:00.810234+00:00 app[web.1]: ORDER BY a.attnum
2013-08-20T03:31:00.810234+00:00 app[web.1]: ON a.attrelid = d.adrelid AND a.attnum = d.adnum
2013-08-20T03:31:00.810234+00:00 app[web.1]: AND a.attnum > 0 AND NOT a.attisdropped
2013-08-20T03:31:00.810392+00:00 app[web.1]: ):
2013-08-20T03:31:00.810392+00:00 app[web.1]: app/controllers/collections_controller.rb:4:in `index'
2013-08-20T03:31:00.810392+00:00 app[web.1]:
2013-08-20T03:31:00.810392+00:00 app[web.1]:
2013-08-20T03:31:01.224316+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=shrouded-citadel-6554.herokuapp.com fwd="107.193.213.240" dyno=web.1 connect=3ms service=8ms status=200 bytes=0
heroku pg:reset DATABASE --confirm YOUR_APP_NAME
heroku run rake db:setup
heroku restart
heroku open
相关&重要文件:
在database.yml中: 发展: 适配器:sqlite3 数据库:db / development.sqlite3 游泳池:5 超时:5000
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: postgresql
encoding: utf8
database: portfolio_production
pool: 5
username:
password:
在Gemfile中:
source 'https://rubygems.org'
ruby '2.0.0'
gem 'rails', '3.2.3'
group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg'
end
答案 0 :(得分:1)
看起来像Heroku没有运行db:部署时迁移。
尝试运行
#heroku run rake db:migrate
再次部署后,在控制台上。
运行迁移后,您需要使用
重新启动应用#heroku restart
重新加载架构并拾取任何架构更改。
答案 1 :(得分:1)
您仍然可以使用sqlite进行开发,Gemfile
应该如下所示:
group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg'
end
这将允许您在Heroku(生产模式)和postgresql
本地使用sqlite
。
一旦在heroku上部署,请不要忘记运行数据库迁移。您可以使用heroku run rake db:migrate
命令运行迁移。
答案 2 :(得分:0)
您需要更改database.yml
文件以反映新的adapter
。你也应该在本地设置postgres。
新的database.yml
文件应该看起来像 -
development: adapter: postgresql encoding: utf8 database: app_name_development pool: 5 username: password: test: adapter: postgresql encoding: utf8 database: app_name_test pool: 5 username: password: production: adapter: postgresql encoding: utf8 database: app_name_production pool: 5 username: password:
修改database.yml
运行
rake db:drop db:create db:migrate
在Postgres中创建新数据库。
答案 3 :(得分:0)
您可以在本地拥有与生产中不同的适配器,这没有问题。部署到Heroku时,您需要手动运行迁移,这不是部署过程的一部分。
因此,您首先定期部署它,然后运行heroku run rake --trace db:migrate
。您看到的错误告诉您,Collection model doest的表不存在。