首先,我想知道是否有人使用XEROUND插件在Heroku上成功地构建了Rails应用程序?
我的PHP应用程序可以很好地处理XEROUND插件(相同的数据库)。但是,我的Ruby应用程序在启动时出现了错误。我们很抱歉,但出了点问题。
在我的开发机器上,当我运行:
rails server -e production节目一开始就没问题。
当我将代码推送到Heroku并启动应用程序时,我会得到“对不起”错误。
有什么想法吗?在分配数据库变量之后,是否有输出数据库变量的功能?据我所知,这将意味着修改活动记录适配器。这是Ruby本身的问题吗?它应该已经进入连接池了吗?在Heroku之外使用XEROUND会更好吗?
我的database.yml包含
production:
adapter: mysql2
encoding: utf8
database: <%= ENV['XEROUND_DATABASE_NAME'] %>
username: <%= ENV['XEROUND_DATABASE_USERNAME'] %>
password: <%= ENV['XEROUND_DATABASE_PASSWORD'] %>
host: <%= ENV['XEROUND_DATABASE_HOST'] %>
port: <%= ENV['XEROUND_DATABASE_PORT'] %>当我硬编码这些值时,我会得到同样的消息。
建立关于Heroku的信息:
git push heroku master
Counting objects: 15, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (10/10), 1.19 KiB, done.
Total 10 (delta 7), reused 0 (delta 0)
-----> Heroku receiving push
-----> Ruby/Rails app detected
-----> Installing dependencies using Bundler version 1.2.1
Running: bundle install --without development:test --path vendor/bundle - -binstubs bin/
Fetching gem metadata from ....rubygems.org/.........
Using rake (0.9.2.2)
Using i18n (0.6.1)
Using multi_json (1.3.6)
Using activesupport (3.2.1)
Using builder (3.0.3)
Using activemodel (3.2.1)
Using erubis (2.7.0)
Using journey (1.0.4)
Using rack (1.4.1)
Using rack-cache (1.2)
Using rack-test (0.6.2)
Using hike (1.2.1)
Using tilt (1.3.3)
Using sprockets (2.1.3)
Using actionpack (3.2.1)
Using mime-types (1.19)
Using polyglot (0.3.3)
Using treetop (1.4.10)
Using mail (2.4.4)
Using actionmailer (3.2.1)
Using arel (3.0.2)
Using tzinfo (0.3.33)
Using activerecord (3.2.1)
Using mysql2 (0.3.11)
Using activerecord-mysql2-adapter (0.0.3)
Using activeresource (3.2.1)
Using bundler (1.2.1)
Using coffee-script-source (1.3.3)
Using execjs (1.4.0)
Using coffee-script (2.2.0)
Using rack-ssl (1.3.2)
Using json (1.7.5)
Using rdoc (3.12)
Using thor (0.14.6)
Using railties (3.2.1)
Using coffee-rails (3.2.2)
Using jquery-rails (2.1.3)
Using rails (3.2.1)
Using sass (3.2.1)
Using sass-rails (3.2.5)
Using uglifier (1.3.0)
Your bundle is complete! It was installed into ./vendor/bundle
Cleaning up the bundler cache.
-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
Detected manifest.yml, assuming assets were compiled locally
-----> Rails plugin injection
Injecting rails_log_stdout
Injecting rails3_serve_static_assets
-----> Discovering process types
Procfile declares types -> (none)
Default types for Ruby/Rails -> console, rake, web, worker
-----> Compiled slug size: 8.7MB
-----> Launching... done, v18
....shielded-brushlands-3293.herokuapp.com deployed to Heroku
To git@heroku.com:shielded-brushlands-3293.git
73c5cb6..c391a47 master -> masterHeroku日志显示:
2012-09-30T00:58:10+00:00 app[web.1]: => Booting WEBrick
2012-09-30T00:58:10+00:00 app[web.1]: => Rails 3.2.1 application starting in production on ...0.0.0.0:6832
2012-09-30T00:58:10+00:00 app[web.1]: => Call with -d to detach
2012-09-30T00:58:10+00:00 app[web.1]: => Ctrl-C to shutdown server
2012-09-30T00:58:10+00:00 app[web.1]: Started GET "/" for 76.87.97.210 at 2012-09-30 00:58:10 +0000
2012-09-30T00:58:15+00:00 heroku[router]: GET shielded-brushlands-3293.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=4529ms status=500 bytes=643
2012-09-30T00:58:15+00:00 app[web.1]: ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished):
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in `connection'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/railties-3.2.1/lib/rails/rack/logger.rb:26:in `call_app'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:66:in `call!'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/railties-3.2.1/lib/rails/rack/logger.rb:16:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/lock.rb:15:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:51:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.1/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/railties-3.2.1/lib/rails/rack/log_tailer.rb:14:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.1/lib/action_dispatch/middleware/request_id.rb:22:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.1/lib/action_dispatch/middleware/static.rb:53:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.1/lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:136:in `forward'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/handler/webrick.rb:59:in `service'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.1/lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/runtime.rb:17:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:245:in `fetch'
2012-09-30T00:58:15+00:00 app[web.1]: /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.1/lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
2012-09-30T00:58:15+00:00 app[web.1]:
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/railties-3.2.1/lib/rails/engine.rb:479:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/query_cache.rb:67:in `rescue in call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:374:in `retrieve_connection'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/content_length.rb:14:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:185:in `lookup'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/railties-3.2.1/lib/rails/application.rb:220:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: cache: [GET /] miss
2012-09-30T00:58:15+00:00 app[web.1]:
2012-09-30T00:58:15+00:00 app[web.1]:
2012-09-30T00:58:15+00:00 app[web.1]: /usr/local/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in `retrieve_connection'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/query_cache.rb:61:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:443:in `call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.1/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/callbacks.rb:405:in `_run__2306900267479677068__call__3522025195442796026__callbacks'
2012-09-30T00:58:15+00:00 app[web.1]: vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/callbacks.rb:405:in `__run_callback'
2012-09-30T00:58:15+00:00 heroku[router]: GET shielded-brushlands-3293.herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=17ms status=200 bytes=0
2012-09-30T00:58:15+00:00 app[web.1]: cache: [GET /favicon.ico] miss, storeThe gemfile.lock
GEM
remote: ....rubygems.org/
specs:
actionmailer (3.2.1)
actionpack (= 3.2.1)
mail (~> 2.4.0)
actionpack (3.2.1)
activemodel (= 3.2.1)
activesupport (= 3.2.1)
builder (~> 3.0.0)
erubis (~> 2.7.0)
journey (~> 1.0.1)
rack (~> 1.4.0)
rack-cache (~> 1.1)
rack-test (~> 0.6.1)
sprockets (~> 2.1.2)
activemodel (3.2.1)
activesupport (= 3.2.1)
builder (~> 3.0.0)
activerecord (3.2.1)
activemodel (= 3.2.1)
activesupport (= 3.2.1)
arel (~> 3.0.0)
tzinfo (~> 0.3.29)
activerecord-mysql2-adapter (0.0.3)
mysql2
activeresource (3.2.1)
activemodel (= 3.2.1)
activesupport (= 3.2.1)
activesupport (3.2.1)
i18n (~> 0.6)
multi_json (~> 1.0)
arel (3.0.2)
builder (3.0.0)
coffee-rails (3.2.2)
coffee-script (>= 2.2.0)
railties (~> 3.2.0)
coffee-script (2.2.0)
coffee-script-source
execjs
coffee-script-source (1.3.3)
erubis (2.7.0)
execjs (1.4.0)
multi_json (~> 1.0)
hike (1.2.1)
i18n (0.6.0)
journey (1.0.4)
jquery-rails (2.1.1)
railties (>= 3.1.0, < 5.0)
thor (~> 0.14)
json (1.7.5)
mail (2.4.4)
i18n (>= 0.4.0)
mime-types (~> 1.16)
treetop (~> 1.4.8)
mime-types (1.19)
multi_json (1.3.6)
mysql2 (0.3.11)
polyglot (0.3.3)
rack (1.4.1)
rack-cache (1.2)
rack (>= 0.4)
rack-ssl (1.3.2)
rack
rack-test (0.6.1)
rack (>= 1.0)
rails (3.2.1)
actionmailer (= 3.2.1)
actionpack (= 3.2.1)
activerecord (= 3.2.1)
activeresource (= 3.2.1)
activesupport (= 3.2.1)
bundler (~> 1.0)
railties (= 3.2.1)
railties (3.2.1)
actionpack (= 3.2.1)
activesupport (= 3.2.1)
rack-ssl (~> 1.3.2)
rake (>= 0.8.7)
rdoc (~> 3.4)
thor (~> 0.14.6)
rake (0.9.2.2)
rdoc (3.12)
json (~> 1.4)
sass (3.2.1)
sass-rails (3.2.5)
railties (~> 3.2.0)
sass (>= 3.1.10)
tilt (~> 1.3)
sprockets (2.1.3)
hike (~> 1.2)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10)
polyglot
polyglot (>= 0.3.1)
tzinfo (0.3.33)
uglifier (1.2.7)
execjs (>= 0.3.0)
multi_json (~> 1.3)
PLATFORMS
ruby
DEPENDENCIES
activerecord-mysql2-adapter
coffee-rails (~> 3.2.1)
jquery-rails
mysql2
rails (= 3.2.1)
sass-rails (~> 3.2.3)
uglifier (>= 1.0.3)发布于 2012-10-01 04:44:22
我在网上查了一遍:干净利落heroku ruby
列表中的第一项:https://devcenter.heroku.com/articles/xeround
因此,如果我可以使用heroku配置来设置变量,那么我应该能够看到下一次搜索的所有变量: heroku config。
列表中的第一项:https://devcenter.heroku.com/articles/config-vars
在config-vars文章中(来自第二次搜索),我可以发出命令: heroku config。
heroku config
! autoupdate in progress
=== shielded-brushlands-3293 Config Vars
DATABASE_URL: postgres://hvsosprakvuedm:v5QU211mYByXbBIdAxa3s4oMff@ec2-107-20-195-105.compute-1.amazonaws.com:5432/dehgili4ph7ih7
GEM_PATH: vendor/bundle/ruby/1.9.1
LANG: en_US.UTF-8
PATH: bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin
RACK_ENV: production
RAILS_ENV: production
XEROUND_DATABASE_ADAPTER: mysql
XEROUND_DATABASE_FAILOVER_ADAPTER: mysql
XEROUND_DATABASE_FAILOVER_HOST: instance27464.db.xeround.com.
XEROUND_DATABASE_FAILOVER_NAME: app7912272
XEROUND_DATABASE_FAILOVER_PASSWORD: xxxxx
XEROUND_DATABASE_FAILOVER_PORT: 16304
XEROUND_DATABASE_FAILOVER_URL: mysql://app7912272:xxxx@instance27464.db.xeround.com.:16304/app7912272
XEROUND_DATABASE_FAILOVER_USERNAME: app7912272
XEROUND_DATABASE_HOST: instance27464.db.xeround.com.
XEROUND_DATABASE_INTERNAL_ADAPTER: mysql
XEROUND_DATABASE_INTERNAL_HOST: int.instance27464.db.xeround.com.
XEROUND_DATABASE_INTERNAL_NAME: app7912272
XEROUND_DATABASE_INTERNAL_PASSWORD: xxxxx
XEROUND_DATABASE_INTERNAL_PORT: 16304
XEROUND_DATABASE_INTERNAL_URL: mysql://app7912272:xxxx@int.instance27464.db.xeround.com.:16304/app7912272
XEROUND_DATABASE_INTERNAL_USERNAME: app7912272
XEROUND_DATABASE_NAME: app7912272
XEROUND_DATABASE_PASSWORD: xxxxx
XEROUND_DATABASE_PORT: 16304
XEROUND_DATABASE_URL: mysql://app7912272:xxxx@instance27464.db.xeround.com.:16304/app7912272
XEROUND_DATABASE_USERNAME: app7912272第一个引起了我的注意,它指向了一个postgres的位置。有关系吗?我不是指DATABASE_URL。
这篇(来自第一次搜索的)干净利落的文章包含了一行,但没有解释为什么,它只是说“做吧”。
连接到干涉仪,xeround外接程序将将数据库的URL存储在两个配置vars中: XEROUND_DATABASE_URL和XEROUND_DATABASE_INTERNAL_URL
“内部”URL被转换为内部IP地址,在从同一数据中心访问数据库时应使用该URL。第一个URL用于从外部连接。
复制与您相关的配置变量的值-
$ heroku配置:添加DATABASE_URL=(URL配置vars)
嗯嗯?它不是我在程序中引用的变量,也不是设置在我的本地机器上的变量。
这里是这样的:因为这应该是一个云数据库,所以我不需要知道任何关于数据中心位置的信息,所以使用外部数据库。
heroku config:add DATABASE_URL=mysql://app7912272:xxxx@instance27464.db.xeround.com.:16304/app7912272
Setting config vars and restarting shielded-brushlands-3293... !
Autoupdate in progress
done, v20
DATABASE_URL: mysql://app7912272:XXXX@instance27464.db.xeround.com.:16304/app7912272让我们看看它是否出现..。废话
好的,把它设置为内部:
heroku config:add DATABASE_URL=mysql://app7912272:xxxx@int.instance27464.db.xeround.com.:16304/app7912272让我们看看它是否出现..。垃圾II
我还注意到有两个变量名为XEROUND_DATABASE_ADAPTER、XEROUND_DATABASE_FAILOVER_ADAPTER和XEROUND_DATABASE_INTERNAL_ADAPTER。它们都设置为mysql。我正在使用mysql2。
heroku config:add XEROUND_DATABASE_ADAPTER=mysql2
heroku config:add XEROUND_DATABASE_FAILOVER_ADAPTER=mysql2
herokU config:add XEROUND_DATABASE_INTERNAL_ADAPTER=mysql2让我们看看它是否出现..。垃圾III
在这篇文章中,更深入的内容是:
Each of the URLs contains a string of the following syntax:
mysql://username:password@host:port/database
The parts out of which the URLs are made of are also set for your convenience in the following environment variables:
XEROUND_DATABASE_ADAPTER
XEROUND_DATABASE_USERNAME
XEROUND_DATABASE_PASSWORD
XEROUND_DATABASE_HOST
XEROUND_DATABASE_PORT
XEROUND_DATABASE_NAME
XEROUND_DATABASE_INTERNAL_ADAPTER
XEROUND_DATABASE_INTERNAL_USERNAME
XEROUND_DATABASE_INTERNAL_PASSWORD
XEROUND_DATABASE_INTERNAL_HOST
XEROUND_DATABASE_INTERNAL_PORT
XEROUND_DATABASE_INTERNAL_NAME任何有足够长时间参与编程的人,都可能知道这将走向何方。有时候你会做一些事情,即使它们毫无意义。
因此mysql:是从适配器派生的。还更新url变量:
heroku config:add DATABASE_URL=mysql2://app7912272:xxxx@instance27464.db.xeround.com.:16304/app7912272
heroku config:add XEROUND_DATABASE_URL=mysql2://app7912272:xxxxxx@instance27464.db.xeround.com.:16304/app7912272
heroku config:add XEROUND_DATABASE_FAILOVER_URL=mysql2://app7912272:xxxxxx@instance27464.db.xeround.com.:16304/app7912272
herokU config:add XEROUND_DATABASE_INTERNAL_URL=mysql2://app7912272:xxxxxx@instance27464.db.xeround.com.:16304/app7912272别胡说了,申请出来了
最后看一看:
heroku config
! autoupdate in progress
=== shielded-brushlands-3293 Config Vars
DATABASE_URL: mysql2://app7912272:xxxx@instance27464.db.xeround.com.:16304/app7912272
GEM_PATH: vendor/bundle/ruby/1.9.1
LANG: en_US.UTF-8
PATH: bin:vendor/bundle/ruby/1.9.1/bin:/usr/local bin:/usr/bin:/bin
RACK_ENV: production
RAILS_ENV: production
XEROUND_DATABASE_ADAPTER: mysql2
XEROUND_DATABASE_FAILOVER_ADAPTER: mysql2
XEROUND_DATABASE_FAILOVER_HOST: instance27464.db.xeround.com.
XEROUND_DATABASE_FAILOVER_NAME: app7912272
XEROUND_DATABASE_FAILOVER_PASSWORD: xxxx
XEROUND_DATABASE_FAILOVER_PORT: 16304
XEROUND_DATABASE_FAILOVER_URL: mysql2://app7912272:xxxx@instance27464.db.xeround.com.:16304/app7912272
XEROUND_DATABASE_FAILOVER_USERNAME: app7912272
XEROUND_DATABASE_HOST: instance27464.db.xeround.com.
XEROUND_DATABASE_INTERNAL_ADAPTER: mysql2
XEROUND_DATABASE_INTERNAL_HOST: int.instance27464.db.xeround.com.
XEROUND_DATABASE_INTERNAL_NAME: app7912272
XEROUND_DATABASE_INTERNAL_PASSWORD: xxxx
XEROUND_DATABASE_INTERNAL_PORT: 16304
XEROUND_DATABASE_INTERNAL_URL: mysql2://app7912272:xxxx@instance27464.db.xeround.com.:16304/app7912272
XEROUND_DATABASE_INTERNAL_USERNAME: app7912272
XEROUND_DATABASE_NAME: app7912272
XEROUND_DATABASE_PASSWORD: xxxx
XEROUND_DATABASE_PORT: 16304
XEROUND_DATABASE_URL: mysql2://app7912272:xxxx@instance27464.db.xeround.com.:16304/app7912272
XEROUND_DATABASE_USERNAME: app7912272发布于 2012-12-17 20:17:46
由于mysql2 gem是默认的w/ Rails 3,所以只需确保您的gem文件中有“mysql2”,并运行包安装、提交/推到heroku。
当然,请使用heroku config中"XEROUND_DATABASE_URL“下面列出的URL。
heroku config:add DATABASE_URL=mysql2://app7912272:xxxx@instance27464.db.xeround.com.:16304/app7912272注意将mysql://更改为mysql 2://(这是关键)
然后
heroku restart我只是在一个全新的Rails 3.2.9 Heroku应用上成功地运行了Xeround。没有必要将适配器更改为"mysql2“
https://stackoverflow.com/questions/12659295
复制相似问题