如何在Heroku中运行Rails控制台?Rails 5.1和postgresql

pftdvrlh  于 2022-11-13  发布在  PostgreSQL
关注(0)|答案(2)|浏览(107)

I've been following along with a tutorial for a Rails app. The tutorial is based on Rails 5 and I am using Rails 5.1.2. Everything works great locally and pushed to heroku with no problems. However, when I went to create an admin user on the production database by running:

$ heroku run rails c

it returns the following error:
/app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.3/lib/active_support/dependencies.rb:292:in require': cannot load such file -- rack/handler/c (LoadError) from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.3/lib/active_support/dependencies.rb:292:in block in require' from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.3/lib/active_support/dependencies.rb:258:in load_dependency' from /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.3/lib/active_support/dependencies.rb:292:in require' from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.3/lib/rack/handler.rb:74:in try_require' from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.3/lib/rack/handler.rb:16:in get' from /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.3/lib/rack/server.rb:301:in server' from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.3/lib/rails/commands/server/server_command.rb:68:in print_boot_information' from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.3/lib/rails/commands/server/server_command.rb:38:in start' from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.3/lib/rails/commands/server/server_command.rb:131:in block in perform' from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.3/lib/rails/commands/server/server_command.rb:126:in tap' from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.3/lib/rails/commands/server/server_command.rb:126:in perform' from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor/command.rb:27:in run' from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in invoke_command' from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.0/lib/thor.rb:387:in dispatch' from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.3/lib/rails/command/base.rb:63:in perform' from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.3/lib/rails/command.rb:44:in invoke' from /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.3/lib/rails/commands.rb:16:in ' from bin/rails:9:in require' from bin/rails:9:in '`
To get around this I can run:

$ heroku run bash
$ rails c

and this allows me to update the production database. While this works and gets me what I need. I want to know why the original command doesn't work. I have searched everywhere for an answer and can't come up with anything that applies to me. I am trying to improve my developing skills and would like to understand why the original problem won't work.
I can add any files anyone needs to see, but I don't even know which ones would be relevant to this problem.

ne5o7dgx

ne5o7dgx1#

如果您有多个应用程序,则可以指定应用程序的名称:

heroku run rails c -a APP_NAME
lfapxunr

lfapxunr2#

我的理解是,heroku run命令是由Heroku命令行界面(CLI)提供的。CLI不知道如何处理rails c命令。但是,运行heroku run bash将启动一个新的dyno,并提供对Unix shell的访问,在那里你可以运行命令(即rails c),就像你是本地终端一样。有关更多信息,请参见:https://devcenter.heroku.com/articles/how-heroku-works
编辑以修复错误:CLI知道如何处理rails c命令

相关问题