ローカル アプリを本番環境にデプロイしようとしています
私の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が見つかりません(エラー)または500内部サーバー(エラー)が発生します
ドキュメントcleardb
に従ってアドオンを使用しています。
問題はデータベースだと思います。最初に、次のようにデータベース情報を本番環境用に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