Rails 控制台无法在服务器上运行

Posted

技术标签:

【中文标题】Rails 控制台无法在服务器上运行【英文标题】:Rails console not working on server 【发布时间】:2014-10-31 21:34:12 【问题描述】:

当我通过 SSH 在 Capistrano 部署的 Current 文件夹中的服务器上运行 bundle exec rails console productionrails console production 时,我得到:

Usage:
     rails new APP_PATH [options]

Options:
    (...)

带有启动新应用的说明。在本地它有效。为什么我不能远程启动控制台?

【问题讨论】:

这行得通吗? RAILS_ENV=production bundle exec rails console @Eugene 我收到与上面相同的消息。不知道为什么,安装了 rails 和 ruby​​。 你加载你的环境了吗? rvm gemset 或 rbenv 或其他 我启动了正在运行的(瘦)服务器。如何加载环境? rvm gemsetUnknown subcommand ' ' 【参考方案1】:

我假设您从版本 3 更新到 rails 4,并且您的应用无法在 bin 目录中找到可执行文件。运行这个来查看你的 rails 版本:

$ rails -v

如果您的rails 版本是4 或更高版本,请尝试运行:

$ rake rails:update:bin

来源:Rails 4 Release Notes

6.1 显着变化

您的应用程序的可执行文件现在位于bin/ 目录中。运行rake rails:update:bin 以获取bin/bundlebin/railsbin/rake

【讨论】:

我没有更新 Rails。这是一个干净的安装。无论如何我都会尝试运行该命令。 这对我有帮助。非常感谢。 "bundle exec rake rails:update:bin" 为我工作,然后 "bundle exec rails c" 我尝试了此解决方案,但出现以下错误:“未找到 Rakefile(正在查找:rakefile、Rakefile、rakefile.rb、Rakefile.rb)”。我是红宝石和耙子的新手。知道发生了什么吗? 我不得不将命令稍微更改为bundle exec rake app:update:bin【参考方案2】:

我有同样的问题,当你通过 cap shared/bin 进行部署时,我发现它是指向current/bin 的符号链接。

这对我有用:

rm current/bin mkdir current/bin rake rails:update:bin

这应该会有所帮助,但它在某种程度上是一个临时解决方案,我正在尝试找出如何使 cap 不自动符号链接当前/bin。

【讨论】:

【参考方案3】:

我正在使用 capistrano 进行部署,包括 capistrano/bundler gem。由于 ./bin 目录在 Rails 4 中是版本控制的,我们需要通过从 set :linked_dirs 中删除 bin 来防止 Capistrano 在部署中链接它。

现在为了防止 bundler 覆盖版本控制的 binstubs,我们可以添加行 set :bundle_binstubs, nil 这将防止 capistrano-bundler 在运行 bundle install 时设置 --binstubs 选项。

我的 config/deploy.rb 文件现在有以下几行:

# Default value for linked_dirs is []
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system')

set :bundle_binstubs, nil

注意:linked_dirs 行中缺少bin 目录。

【讨论】:

【参考方案4】:

这个问题已经有一段时间没有回答了。

就我而言,我需要运行:

rake app:update:bin

Note- app 而不是 rails。

我的 Rails 5.1 应用程序中的 bin 目录全部丢失

【讨论】:

是的,bundle exec rake app:update:bin 成功。【参考方案5】:

如果是 Rails 5.2

我必须通过在项目根目录中运行以下命令来删除 bin 目录。

 rm -rf bin

然后我在项目根目录中运行了另一个命令:

 rake app:update:bin

它会显示如下输出:

  create  bin
  create  bin/bundle
  create  bin/rails
  create  bin/rake
  create  bin/setup
  create  bin/update
  create  bin/yarn

就是这样。

【讨论】:

以上是关于Rails 控制台无法在服务器上运行的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Attachinary 在 Heroku 上运行 Rails 控制台:未定义方法 `respond_to' for Attachinary::CorsController:Class

无法在生产环境中解析的路线(Rails 2.3.5)

部署到服务器后访问Rails控制台

无法在rails控制台中访问Mysql模型。

无法在 Rails 控制台中加载 Ruby EventMachine - 没有要加载的文件

在 Rails 中的控制台无法使用 Actioncable 广播