【问题标题】:Rails: Production Rails console won't startRails:生产 Rails 控制台无法启动
【发布时间】:2012-05-03 23:08:01
【问题描述】:

在我的 OS X 开发笔记本电脑上一切正常。

将应用部署到生产环境,它会按预期运行和显示数据。

但是,当我尝试在生产服务器上运行 Rails console 时出现错误...

$ rails console -e production
/opt/deployed_rails_apps/con_app_rails_3/shared/bundle/ruby/1.9.1/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:
    in `connect': Can't connect to local MySQL server through socket 
        '/tmp/mysql.sock' (2) (Mysql2::Error)

    from /opt/deployed_rails_apps/con_app_rails_3/shared/bundle/ruby/1.9.1/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `initialize'
    from /opt/deployed_rails_apps/con_app_rails_3/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.2/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `new'

我尝试从 database.yml 中删除 socket: /tmp/mysql.sock -- 结果相同。

虽然应用程序可以运行,但我确实需要能够在生产环境中访问控制台以执行某些任务。

我可以使用 MySQL 命令行客户端连接到 MySQL 服务器。


红宝石 1.9.3p125

Rails 3.2.2

mysql2 gem 0.3.11

MySQL 服务器:5.1.61

生产主机:Linux 2.6.32-220.4.2.el6.x86_64

数据库.yml

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: con_app_rails_3_development
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

test:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: con_app_rails_3_test
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  host: dbhost
  database: con_app_rails_3_production
  pool: 5
  username: xxxx
  password: xxxx
  socket: /tmp/mysql.sock

【问题讨论】:

    标签: mysql ruby-on-rails ruby


    【解决方案1】:

    解决了。

    我需要做的就是……

    $ RAILS_ENV=production bundle exec rails console
    

    【讨论】:

    • 我不需要bundle exec,但在命令行中指定RAILS_ENV=production FIRST 很重要。
    【解决方案2】:

    另一种方法:

    ./script/rails console production

    【讨论】:

      【解决方案3】:

      我用运行解决了:

       RAILS_ENV=production bundle exec rails c
      

      更多详情link

      【讨论】:

        【解决方案4】:

        您也可以通过将--environment=production 参数附加到rails crails console 命令来解决此问题

        rails c --environment=production
        

        就是这样。

        我希望这会有所帮助

        【讨论】:

          猜你喜欢
          • 2014-08-08
          • 2014-08-06
          • 1970-01-01
          • 2014-01-24
          • 2015-03-30
          • 1970-01-01
          • 2012-12-20
          相关资源
          最近更新 更多