当我在Capistrano部署的bundle exec rails console production
文件夹中的服务器上通过SSH运行rails console production
或Current
时,我得到:
Usage:
rails new APP_PATH [options]
Options:
(...)
说明开始一个新的应用程序。在当地它的工作原理。为什么我无法远程启动控制台?
答案 0 :(得分:61)
我假设您从版本3更新为rails 4
,而您的应用无法在bin
目录中找到可执行文件。运行此命令以查看您的rails版本:
$ rails -v
如果您的rails
版本为4或更高版本,请尝试运行:
$ rake rails:update:bin
6.1值得注意的变化
- 您应用的可执行文件现在位于
bin/
目录中。运行rake rails:update:bin
以获取bin/bundle
,bin/rails
和bin/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目录