在Heroku上设置Firefly(ruby link shortener)2.0?

时间:2012-12-31 22:22:20

标签: ruby-on-rails heroku sinatra

我在本地计算机上安装了一个工作,但是无法在heroku上执行相同操作。

我所做的唯一改变:

  • 将firefly.yml中的主机名更改为rxlcc.herokuapp.com
  • 在Gemfile中注释掉其他dbs,只有pg取消注释

我的回复:https://github.com/hayksaakian/rxlcc

github changelog:https://github.com/hayksaakian/rxlcc/commit/d2e2f926b228372a9ff7861e918bdf193a3c3bca

我猜它是因为没有连接到生产数据库,但我不确定我会在哪里添加它们

2012-12-31T05:36:20+00:00 heroku[web.1]: Starting process with command `bundle exec rackup config.ru -p 36424`
2012-12-31T05:36:26+00:00 app[web.1]: /usr/local/lib/ruby/1.9.1/syck.rb:135:in `load': syntax error on line 27, col 0: `adapter = uri.scheme' (ArgumentError)
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:236:in `load_dependency'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `require'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/config.ru:2:in `block in <main>'
2012-12-31T05:36:26+00:00 app[web.1]:   from /usr/local/lib/ruby/1.9.1/syck.rb:135:in `load'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/lib/firefly/database.rb:8:in `config'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/lib/firefly/database.rb:13:in `<top (required)>'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/lib/firefly/database.rb:4:in `connect!'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `require'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `block in require'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:137:in `start'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/bin/rackup:4:in `<top (required)>'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/config.ru:1:in `new'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/bin/rackup:19:in `<main>'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:40:in `eval'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/lib/firefly.rb:30:in `<top (required)>'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/config.ru:1:in `<main>'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/config.ru:2:in `require'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:252:in `start'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:301:in `wrapped_app'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:200:in `app'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/bin/rackup:19:in `load'
2012-12-31T05:36:26+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:40:in `parse_file'
2012-12-31T05:36:28+00:00 heroku[web.1]: Process exited with status 1
2012-12-31T05:36:28+00:00 heroku[web.1]: State changed from starting to crashed
2012-12-31T05:41:04+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=rxlcc.herokuapp.com fwd=71.212.33.130 dyno= queue= wait= connect= service= status=503 bytes=
2012-12-31T05:41:05+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=rxlcc.herokuapp.com fwd=71.212.33.130 dyno= queue= wait= connect= service= status=503 bytes=

my heroku addons:

heroku-postgresql:dev  HEROKU_POSTGRESQL_NAVY

更新

我尝试在lib / firefly / server.rb中添加一行

  # suggested by iain on stackoverflow
  @config[:database_url] = ENV["DATABASE_URL"]

这似乎没有任何改变

https://github.com/hayksaakian/rxlcc/commit/638bb8b215cf09f7edbafc0f21e964dfc05f86f2

    2013-01-02T06:32:19+00:00 heroku[web.1]: State changed from crashed to starting
    2013-01-02T06:32:22+00:00 heroku[web.1]: Starting process with command `bundle exec rackup config.ru -p 18667`
    2013-01-02T06:32:25+00:00 app[web.1]: /usr/local/lib/ruby/1.9.1/syck.rb:135:in `load': syntax error on line 27, col 0: `adapter = uri.scheme' (ArgumentError)
    2013-01-02T06:32:25+00:00 app[web.1]:   from /usr/local/lib/ruby/1.9.1/syck.rb:135:in `load'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/lib/firefly/database.rb:8:in `config'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/lib/firefly/database.rb:4:in `connect!'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/lib/firefly/database.rb:13:in `<top (required)>'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `require'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `block in require'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:236:in `load_dependency'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `require'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/lib/firefly.rb:30:in `<top (required)>'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/config.ru:2:in `require'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/config.ru:2:in `block in <main>'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/config.ru:1:in `new'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/config.ru:1:in `<main>'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:40:in `eval'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:40:in `parse_file'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:200:in `app'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:301:in `wrapped_app'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:252:in `start'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:137:in `start'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/bin/rackup:4:in `<top (required)>'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/bin/rackup:19:in `load'
    2013-01-02T06:32:25+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/bin/rackup:19:in `<main>'
    2013-01-02T06:32:26+00:00 heroku[web.1]: Process exited with status 1
    2013-01-02T06:32:27+00:00 heroku[web.1]: State changed from starting to crashed
    2013-01-02T06:37:44+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=rxlcc.herokuapp.com fwd=71.212.33.130 dyno= queue= wait= connect= service= status=503 bytes=
    2013-01-02T06:37:44+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=rxlcc.herokuapp.com fwd=71.212.33.130 dyno= queue= wait= connect= service= status=503 bytes=

1 个答案:

答案 0 :(得分:1)

是的,您需要在yml文件的host:下指定数据库URL。您可以在Heroku网站的设置页面中看到该网址,也可以运行heroku config --app rxlcc并查找DATABASE_URL。

注意:如果您要使用Heroku,说明会告诉您更改.gitignore并检入.yml文件。如果你要在那里保留密钥,那么我不会这样做,但如果你这样做,不要让回购公开一个!如果有其他人知道秘密,你< em>需要来重新生成它。

我个人会通过

添加任何秘密
heroku config:add SECRET_VARIABLE=blahblahblah --app rxlcc

然后通过

将其读入应用程序所需的位置
my_secret_variable = ENV["SECRET_VARIABLE"]

我看到该应用在https://github.com/hayksaakian/rxlcc/blob/master/lib/firefly/server.rb#L209https://github.com/hayksaakian/rxlcc/blob/master/lib/firefly/server.rb#L109之前的块中设置了配置。在任何一点你都可以尝试:

@config[:database_url] = ENV["DATABASE_URL"]

添加任何秘密变种。