gpt4 book ai didi

mysql - 在 Heroku 上使用 Ruby 和 XEROUND

转载 作者:行者123 更新时间:2023-11-30 23:27:11 26 4
gpt4 key购买 nike

首先我想知道是否有人使用 XEROUND 附加组件在 Heroku 上成功构建了 Ruby on 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 -> master

Heroku 日志显示:

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, store

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)

最佳答案

我在网上搜索:xeround heroku ruby​​

列表中的第一项: https://devcenter.heroku.com/articles/xeround

所以如果我可以使用 heroku config 来设置变量,那么我应该可以看到所有的变量下一个搜索: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 文章(来自第一次搜索)包含一行,但没有说明原因,只是说去做。


连接到xeroundXeround 附加组件将数据库的 URL 存储在两个配置变量中: XEROUND_DATABASE_URL 和 XEROUND_DATABASE_INTERNAL_URL

“内部”URL 被转换为内部 IP 地址,在从同一数据中心访问您的数据库时应该使用。第一个 URL 用于从外部连接。

复制与您相关的配置变量的值 -

$ heroku config:add DATABASE_URL=(URL config 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

让我们看看它是否出现......废话二

我还注意到有两个名为 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

让我们看看它是否出现......废话三

在文章的下方:

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

关于mysql - 在 Heroku 上使用 Ruby 和 XEROUND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12659295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com