【发布时间】:2014-01-25 17:22:58
【问题描述】:
我一直在尝试在生产中部署我的本地应用程序
我的Gemfile:
source 'https://rubygems.org'
ruby '2.0.0'
gem 'pry', '0.9.12'
gem 'mysql', '2.9.1'
gem 'rails-api', '0.1.0'
gem 'rails', '4.0.1'
gem 'awesome_print', '1.1.0'
group :test, :development do
gem 'raddocs', '0.2.0'
gem 'rspec-rails', '2.13.0'
gem 'rspec-core', '2.13.1'
gem 'rspec_api_documentation', '1.0.0'
end
group :development do
gem 'railroady', '1.1.1'
end
group :test do
gem 'database_cleaner'
gem 'capybara', '2.1.0'
gem 'shoulda-matchers', '1.5.6'
gem 'factory_girl_rails', '4.0'
gem "factory_girl", "4.0"
end
我的路线文件中有下一条路线:
post '/region/:id/service' => 'region#service'
我的控制器看起来像这样:
class RegionController < ApplicationController
def service
region = Region.find params[:id]
render text: region.name
end
end
好的,问题是,当我在开发中使用curl 调用服务时效果很好:
$ curl -X POST localhost:port/region/6/service -d ""
但是当我将文件上传到 heroku 时,我再次调用该服务 我得到 404 not found (error) 或 500 internal server (error)
根据the documentation,我正在使用cleardb插件。
我认为问题在于数据库。起初,我为 production 环境编写了我的 database.yml,根据以下内容获取数据库信息:
$ heroku config | grep CLEARDB_DATABASE_URL
但我认为没有必要,因为heroku可以根据这条线自动完成......我认为是
-----> Writing config/database.yml to read from DATABASE_URL
我尝试了两种方式都没有结果,我真的不知道为什么当我尝试在生产环境中进行查询时服务会崩溃。
我的 database.yml 看起来像
development:
adapter: mysql
password: xxx
database: myapp.development
pool: 5
timeout: 5000
test:
adapter: mysql
password: xxx
database: myapp.test_1
pool: 5
timeout: 5000
production:
adapter: mysql
encoding: utf8
database: xxx
username: yyy
password: zzz
pool: 5
timeout: 5000
host: us-cdbr-east-04.cleardb.com
【问题讨论】:
-
请发布您的日志,以便我们可以看到您的错误并从那里进行调试。
-
只是猜测,但我认为您必须删除默认的 postgres 数据库插件。
标签: ruby-on-rails ruby-on-rails-3 heroku ruby-on-rails-4 cleardb