【问题标题】:Rails 3.2.1 - Could not find rake-0.9.2.2 in any of the sources - LocawebRails 3.2.1 - 在任何来源中都找不到 rake-0.9.2.2 - Locaweb
【发布时间】:2012-02-07 08:07:16
【问题描述】:

我是 Rails 新手,遇到了一些问题。 关于系统:Rails-3.2.1 Ruby-1.8.7 RedHat

在本地系统中一切正常。问题发生在网络主机上。 我正在尝试配置系统,但给出的信息不够好。 我正在使用 mysql(mysql2 gem)并且 database.yml 配置正确(我猜)。

database.yml

# MySQL.  Versions 4.1 and 5.0 are recommended.
# 
# Install the MYSQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing:
#   http://dev.mysql.com/doc/refman/5.0/en/old-client.html
development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: rffaguiar
  pool: 5
  username: rffaguiar
  password: ******
  host: mysql01.rffaguiar.com.br

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: rffaguiar
  pool: 5
  username: rffaguiar
  password: ******
  host: mysql01.rffaguiar.com.br

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: rffaguiar
  pool: 5
  username: rffaguiar
  password: ******
  host: mysql01.rffaguiar.com.br

捆绑命令

/home/storage/3/d2/f5/rffaguiar/rails_apps/teste_pos$ bundle
Using rake (0.9.2.2) 
Using i18n (0.6.0) 
Using multi_json (1.0.4) 
Using activesupport (3.2.1) 
Using builder (3.0.0) 
Using activemodel (3.2.1) 
Using erubis (2.7.0) 
Using journey (1.0.1) 
Using rack (1.4.1) 
Using rack-cache (1.1) 
Using rack-test (0.6.1) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.1.2) 
Using actionpack (3.2.1) 
Using mime-types (1.17.2) 
Using polyglot (0.3.3) 
Using treetop (1.4.10) 
Using mail (2.4.1) 
Using actionmailer (3.2.1) 
Using arel (3.0.0) 
Using tzinfo (0.3.31) 
Using activerecord (3.2.1) 
Using activeresource (3.2.1) 
Using bundler (1.0.21) 
Using coffee-script-source (1.2.0) 
Using execjs (1.3.0) 
Using coffee-script (2.2.0) 
Using rack-ssl (1.3.2) 
Using json (1.6.5) 
Using rdoc (3.12) 
Using thor (0.14.6) 
Using railties (3.2.1) 
Using coffee-rails (3.2.2) 
Using johnson (1.2.0) 
Using jquery-rails (2.0.0) 
Using mysql (2.8.1) 
Using mysql2 (0.3.11) 
Using rails (3.2.1) 
Using sass (3.1.14) 
Using sass-rails (3.2.4) 
Using uglifier (1.2.3) 
[32mYour bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.[0m

测试应用只有 1 个控制器(hello)、1 个视图(索引)和 1 个模型。 当 root 是默认的 rails html 页面时,没关系,但是当我将 root 修改为 'hello#index' 时,我得到 500 错误页面。

我不知道是否有相关的东西,但是当使用“rake test”时,我得到了这个:

无法通过套接字连接到本地 MySQL 服务器 '/var/lib/mysql/mysql.sock'

但是那里没有 mysql.sock。 我一直在寻找有关这些问题的几个小时,但没有成功。 谁能指出我正确的方向?抱歉,如果有什么问题,这是我的第一个问题。

更新 1:

netstat -ln | grep mysql

什么都不返回。

更新 2: 现在,我收到了一个乘客错误页面:

在任何来源中都找不到 rake-0.9.2.2 (Bundler::GemNotFound)

但是 gem 在 Gemfile 上。这是我的虚拟主机提供的用于配置测试的link。忘记葡萄牙语,看代码,=)。在那里,您可以在主机线上看到 IP,而不是像我正在做的主机名,但他们说要使用主机名,因为 DB IP 可以更改。是的,我正在尝试使用两者的所有测试。

关于socket线:我之前遇到mysql报错的时候才用过。现在我删除了它。

关于乘客:我正在使用 restart.txt 重新启动乘客后进行测试

【问题讨论】:

  • 你说“database.yml 配置正确(我猜)” - 为什么这是一个猜测?您从哪里获得该配置 - 尤其是 socket 行?
  • mysql --version 返回:mysql Ver 14.14 Distrib 5.1.54, for unknown-linux-gnu (x86_64) using readline 5.1
  • @Gareth:我从网络主机获得了 database.yml。在“mysql.sock”中给出错误之后,我测试了套接字线。但我测试了有没有它。
  • 这就是你的database.yml 的全部内容吗?你有production 部分吗?
  • 能否请您提供您的主机使用的 rake 版本。它似乎。也许你也应该运行“bundle”命令。

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

感谢您的帮助,但网络托管人在打扰他们几天后回复了我。 他们说(简短的总结):

您使用的是 rails 3.2.1 而这个版本没有很好的 共享主机中的性能。我们使用 rails 3.0.9 进行了测试并且工作 一般。请使用 3.0.9 重新构建您的应用程序。

我什至不需要说我会改变虚拟主机。他们有 Rails 3.2.1 的教程,但它不起作用。这太疯狂了,让我担心了3天。我的虚拟主机是 Locaweb (BR)。

再次感谢您的帮助。

【讨论】:

    【解决方案2】:

    它正在默认路径“/var/lib/mysql/mysql.sock”处寻找套接字 如果这不存在,则必须在套接字中明确指定它:参数

    要找出套接字文件的位置,您可以这样做:

    netstat -ln | grep mysql
    

    【讨论】:

    • 对不起,我这样做了,但忘记了最后一行'socket:/var/lib/mysql/mysql.sock'。您的命令在此处不返回任何内容
    • 所以这意味着 mysql 服务/demon 没有运行。让它先运行。
    【解决方案3】:

    尝试运行:

    $ mysqladmin variables
    

    应该吐出socket位置,如果你有mysqladmin...

    编辑:

    对我来说开始听起来像是 Mysql 没有运行。试试:

    $ cd /etc/init.d
    $ ./mysqld start
    

    或者更简单地说:

    $ /etc/init.d/mysqld start
    

    【讨论】:

    • 你用了把'./'放在前面吗?
    • 对不起,没有。现在返回“权限被拒绝”。
    • 那么你需要先使用sudo。像这样:sudo ./mysqld start 然后在出现提示时输入您的密码,然后您应该会遇到问题 :)
    • 这是消息:“没有 tty 存在,也没有指定 askpass 程序”
    • 退出您的 ssh 会话,然后再次 ssh 登录,但是当您这样做时传递 -t 选项:ssh -t user@wherever.com 然后再次执行命令(使用 sudo)
    【解决方案4】:

    由于您在尝试重新启动 mysqld 时遇到权限问题,我建议您向您的网络主机发送电子邮件并询问他们您的 database.yml 文件应该是什么样子,如果您希望在他们的服务器上运行 Rails 项目系统。

    他们过去很有可能帮助其他客户解决了这个问题。

    如果您收到答案,我鼓励您将其添加到您的问题中,以便使用同一虚拟主机的其他人知道如何解决数据库问题。

    【讨论】:

    • 问题是mysql没有运行,他不知道自己在做什么。您的建议只会解决其中一个问题。有时学习的唯一方法就是弄脏你的手:) 我支持他...
    • 是的,我在几小时前打开了一张票并发送了一封电子邮件。我只是在等早上打电话给他们。关于“他们有可能帮助过别人”,是的,可能。但他们的论坛目前处于离线状态。
    【解决方案5】:

    dig 的一点工作表明this page explains where to find your MySQL setup details。这对我来说意味着您的虚拟主机将数据库服务器与应用程序服务器分开,因此问题不是“需要启动 MySQL”。

    解决方案可能是从database.yml 中删除socket 行,并根据上面的链接检查hostusernamepassworddatabase 是否正确;请注意,您的生产部署几乎肯定会寻找 production 部分,而不是 development 部分。

    【讨论】:

    • 1 - 我正在尝试使用和不使用套接字线的所有测试。此刻,我将其删除。 2-关于mysql设置,这是我的虚拟主机提供的link。主机行带有 IP,但他们说使用主机名,因为 DB IP 可以更改。 3 - 我在开发、测试和生产中使用了相同的配置。可能是我的错误,但我不知道是什么。
    • 您能否将整个database.yml 粘贴到问题中?
    • 是的。现在有问题。
    • 我看到了,在使用不同的数据库之前,做了测试,什么也没做。上面关于配置的链接有这行“Nota: Você pode colocar o mesmo banco de dados para development, production e tests.”,意思是“你可以把同一个数据库用于开发、生产和测试”。这太疯狂了。我收到了关于他们的电子邮件答复。看我的回答。感谢您的帮助,但不要再花时间在这里了,=)。
    【解决方案6】:

    我认为套接字线在这里没有用处。 我你提供了一条主机线 AR 应该连接到这个主机而不是使用 unix 套接字

    如果您在 mysql 配置中不使用套接字,请删除此行。

    更新

    另外一点不要为 test/dev/prod 环境使用相同的数据库,因为 test 会在每次执行测试之前和之后擦除数据库

    你可以尝试运行以下命令吗:

    bundle exec rake test
    

    有了它,将使用精确激活的 gem 代替系统。

    通常在部署到您的产品或其他环境时

    做一个

    bundle install command
    

    之前,它会安装您的应用所需的所有新 gem

    【讨论】:

      【解决方案7】:

      您为什么不尝试在 apache2 上使用 phpmyadmin 来查看 MySQL 是否会运行,并了解您的 用于检查的数据库。它还可以帮助更新的 rails 3.2.1 使用更新的 ruby​​ 版本,如 1.9。我已经看到帖子说 1.8 与 rails 3.1 有问题。 祝你好运!

      【讨论】:

        【解决方案8】:

        1) 您是否在 Gemfile 中指定了正确的来源?

        例如,您可能将 ruby​​gems 作为本地计算机中的 gem 源。 但是对于服务器端,您可能需要添加 source :rubygems 在你的 Gemfile 中

        2) 检查您是否在您的存储库中排除了供应商/缓存。 尝试包含这些文件。

        【讨论】:

          猜你喜欢
          • 2012-03-30
          • 2012-07-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-02
          • 2011-12-31
          • 2015-02-21
          • 2013-12-25
          相关资源
          最近更新 更多