3

第一次上论坛,所以我会尽量具体,抱歉任何可能的错别字好吗?

我对 Rails 比较陌生(不到一年),我想创建一个默认项目来使用它。我一直在开发中使用 sqlite3,在生产中使用 pg(heroku),但现在我想把事情做好(我遇到了 sqlite3 运行正常但 pg 没有的问题)并在生产和 devlop 中使用 pg。

我花了 2 天时间搜索 uns,所有的 anwsers 都是旧的或其他版本/其他操作系统。

我将尝试列出我设置舞台所采取的步骤:这里是我的配置:

-操作系统:Windows 7 64x -编辑器
:Aptana Studio
-PostGresql
-Rails 4.0.0.rc1
-Ruby 2.0

  1. 下载并安装 postgresql-9.2.4-1-windows-x64
  2. 将默认密码设置为 postgresql
  3. 在具有所有权限的 postgresql 中创建角色“my_user”
  4. 创建一个测试数据库“rails_test”
  5. 打开 Aptana Studio 并初始化一个新的默认项目,进入项目文件夹,然后运行“rails new .-d postgresql”来生成新项目。
  6. 安装 pg gem "gem install pg" "gem list" 正确显示 pg gem
  7. 配置“database.yml”以使用正确的用户名和密码

    development:
      adapter: postgresql
      encoding: unicode
      database: rails_test
      pool: 5
      username: my_user
      password: 12345
    
  8. 在 ruby​​ 中运行一些命令,例如“gem update”、“bundle install”

然后,当我尝试生成模型并使用 rake db:migrate 时,出现以下错误:

    Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile.

如果我运行“bundle show pg”,这是真的,我会收到消息:

    Could not find gem 'pg'. Did you mean pg? 

如果我打开我的 gemfile,pg gem 就在那里,但是捆绑器没有得到它!

有什么想法可以帮助这个小业余爱好者吗?

天呐!

4

2 回答 2

6

(Windows 7 x64、Ruby2.0.0p247-x64、Rails4.0.0、Postgresql 9.2.4 x64、pg 0.15.1、mysql2 0.3.11)捆绑器似乎存在平台检测/验证问题。虽然我所做的是对 Gemfile.lock 文件的破解(我知道,我知道......),但我有一个(希望是)临时解决方案:

编辑 Gemfile.lock,然后

  • 找到 'pg' 的行:
 multi_json (1.7.7)
 pg (0.15.1-x86-mingw32)
 polyglot (0.3.3)
  • 复制该行,并将新副本修改为:
 multi_json (1.7.7)
 pg (0.15.1-x64-mingw32)
 pg (0.15.1-x86-mingw32)
 polyglot (0.3.3)

当您要求列出它时,这就是已安装 gem 的 x64 版本的自我宣布方式 ( gem list pg)。

对于任何关心的人,mysql2 gem (有时)会遇到完全相同的问题

于 2013-07-18T13:49:35.023 回答
2

我遇到了这个问题,并通过使用 32 位版本的 ruby​​ 而不是 64 位来解决它。您需要确保 devkit 也与您的版本相匹配。因此,如果您安装了 64 位版本,那么也需要进行更改。

于 2013-06-08T22:54:31.190 回答