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

时间:2014-09-07 14:16:48

标签: ruby ruby-on-rails-4 ssh rails-console

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

Usage:
     rails new APP_PATH [options]

Options:
    (...)

说明开始一个新的应用程序。在当地它的工作原理。为什么我无法远程启动控制台?

5 个答案:

答案 0 :(得分:61)

我假设您从版本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
  •   

答案 1 :(得分:21)

我正在使用capistrano进行部署,包括capistrano / bundler gem。由于./ {{}}目录在Rails 4中受版本控制,因此我们需要阻止Capistrano通过从bin删除bin来在部署中链接它。

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

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

set :bundle_binstubs, nil

请注意# 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 行中缺少bin目录。

答案 2 :(得分:15)

我遇到了同样的问题,当您通过上限shared/bin进行部署时,结果是current/bin的符号链接。

这对我有用:

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

这应该会有所帮助,但这有点暂时解决,我试图找出如何使cap不能自动符号化当前/ bin。

答案 3 :(得分:7)

如果 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

就是这样。

答案 4 :(得分:0)

这已经有一段时间了,因为这回答了。

在我的情况下,我需要运行:

rake app:update:bin

注意 - app而不是rails。

我在Rails 5.1 App

中错过了bin目录