Rails 控制台无法在服务器上运行
Posted
技术标签:
【中文标题】Rails 控制台无法在服务器上运行【英文标题】:Rails console not working on server 【发布时间】:2014-10-31 21:34:12 【问题描述】:当我通过 SSH 在 Capistrano 部署的 Current
文件夹中的服务器上运行 bundle exec rails console production
或 rails console production
时,我得到:
Usage:
rails new APP_PATH [options]
Options:
(...)
带有启动新应用的说明。在本地它有效。为什么我不能远程启动控制台?
【问题讨论】:
这行得通吗?RAILS_ENV=production bundle exec rails console
@Eugene 我收到与上面相同的消息。不知道为什么,安装了 rails 和 ruby。
你加载你的环境了吗? rvm gemset 或 rbenv 或其他
我启动了正在运行的(瘦)服务器。如何加载环境? rvm gemset
给Unknown 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/bundle
、bin/rails
和bin/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