首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过capistrano进入生产中的rails控制台?

如何通过capistrano进入生产中的rails控制台?
EN

Stack Overflow用户
提问于 2012-03-05 23:17:57
回答 7查看 12.7K关注 0票数 22

我想通过capistrano从本地机器进入生产服务器上的rails控制台。我找到了一些要点,例如https://gist.github.com/813291和当我通过

代码语言:javascript
复制
cap production console 

我得到了以下结果

代码语言:javascript
复制
192-168-0-100:foldername username $ cap console RAILS_ENV=production
  * executing `console'
  * executing "cd /var/www/myapp/current && rails console production"
    servers: ["www.example.de"]
    [www.example.de] executing command
    [www.example.de] rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.3' -c 'cd /var/www/myapp/current && rails console production'
/var/www/myapp/releases/20120305102218/app/controllers/users_controller.rb:3: warning: already initialized constant VERIFY_PEER
Loading production environment (Rails 3.2.1)
Switch to inspect mode.

就这样..。现在我可以输入一些文本,但是什么也没有发生...

有没有人知道如何解决我的问题?

EN

回答 7

Stack Overflow用户

发布于 2013-08-12 00:29:30

我已经为这种事情添加了我自己的任务:

代码语言:javascript
复制
namespace :rails do
  desc "Remote console"
  task :console, :roles => :app do
    run_interactively "bundle exec rails console #{rails_env}"
  end

  desc "Remote dbconsole"
  task :dbconsole, :roles => :app do
    run_interactively "bundle exec rails dbconsole #{rails_env}"
  end
end

def run_interactively(command)
  server ||= find_servers_for_task(current_task).first
  exec %Q(ssh #{user}@#{myproductionhost} -t '#{command}')
end

现在我说cap rails:console并获得一个控制台。

票数 10
EN

Stack Overflow用户

发布于 2014-06-16 17:44:24

对于Capistrano 3,您可以在config/deploy中添加以下代码行

代码语言:javascript
复制
namespace :rails do
  desc 'Open a rails console `cap [staging] rails:console [server_index default: 0]`'
  task :console do    
    server = roles(:app)[ARGV[2].to_i]

    puts "Opening a console on: #{server.hostname}...."

    cmd = "ssh #{server.user}@#{server.hostname} -t 'cd #{fetch(:deploy_to)}/current && RAILS_ENV=#{fetch(:rails_env)} bundle exec rails console'"

    puts cmd

    exec cmd
  end
end

要打开servers列表中的第一个服务器:

代码语言:javascript
复制
cap [staging] rails:console 

要打开servers列表中的第二个服务器,请执行以下操作:

代码语言:javascript
复制
cap [staging] rails:console 1 

参考:Opening a Rails console with Capistrano 3

需要exec来替换当前进程,否则您将无法与rails控制台进行交互。

票数 5
EN

Stack Overflow用户

发布于 2012-09-21 18:21:10

我也曾尝试过这种方法,但后来我选择了避免构建自己的交互式SSH shell客户端,转而使用this snippet,我发现它只是使用了很好的旧SSH。如果您正在进行一些奇怪的SSH网关代理,那么这可能并不适合,但是对于登录到机器并执行某些操作,它就像一个护身符一样工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9569070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档