没有从Rails建立到Sql Server的连接

时间:2014-05-15 07:03:45

标签: ruby-on-rails ruby sql-server git activerecord

尝试从Rails连接到Sql Server。到目前为止没有工作。 我被建议将此行添加到Gemfile(作为已知错误的修复):

gem 'activerecord-sqlserver-adapter', git: 'https://github.com/Desarrollo-CeSPI/activerecord-sqlserver-adapter.git'

由于我有一个代理,我没有这样做,但必须执行一个解决方法:从该链接下载zip,然后将其解压缩到一个名为AR的目录中的rails项目中,在CMD中迁移到AR内部并运行

gem build activerecord-sqlserver-adapter.gemspec 

在此之后,创建了一个名为activerecord-sqlserver-adapter-3.2.12.gem的宝石,所以我输入了

gem install activerecord-sqlserver-adapter-3.2.12.gem. 

成功。此时,没有引用gemfile中的任何适配器。 rails s成功:booting WEBrick, Rails 4.1.1 starting in development on...

然而,当我打开localhost:3000时,我看到了

ActiveRecord::Connection not Established error

我应该提到database.yml文件(来自config)包含:

development:
  adapter: activerecord-sqlserver-adapter
  mode: odbc
  dsn: odbc_new
  host: localhost
  database: cms
  pool: 5
  username: gst1
  password: pwd1234!@

cms数据库存在,我添加了用户和密码。这里缺少什么?为什么连接错误?哦,我还打开了控制面板(Windows 7) - 管理工具 - 设置数据源(ODBC) - 并添加了一个带有Sql Server身份验证的'odbc_new'条目,在那里添加了用户和密码,默认db:cms并运行连接完成前测试:成功。

我不明白为什么或者如果我真的需要在那里创建和添加这个odbc数据源,如果我在database.yml文件中指定用户和密码。你能帮忙解决这个问题吗?非常感谢提前。

更新: 我刚刚将adapter: sql server添加到database.yml。我仍然得到同样的错误。除了保存之外,我是否必须执行某些操作来验证database.yml文件中的更改? 我还应该向Gemfile添加一些内容吗?我是否还需要在activerecord-sqlserver-adapter-3.2.12.gem中添加本地适配器(称为gemfile)(取自本地驱动器 - 而不是rubygems.org)?我觉得错误可能与此有关。

不确定我是否需要在gem文件中执行这样的操作

gem 'activerecord-sqlserver-adapter-3.2.12.gem', :path => 'C:\Site\simple_cms\AR'

但如果我这样做,请运行

C:\Sites\simple_cms>bundle install
之后

出错:

Fetching gem metadata from https://rubygems.org/...........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Could not find gem 'activerecord-sqlserver-adapter-3.2.12.gem (>= 0)
x86-mingw32' in source at C:/Sites/simple_cms/AR.
Source does not contain any versions of
'activerecord-sqlserver-adapter-3.2.12.gem (>= 0) x86-mingw32'`

UPDATE-我也试着像这样指定版本号: `gem'activerecord-sqlserver-adapter','3.2.12',: path => 'C:\网站\ simple_cms \ AR' 但又是一个错误:

`C:\ Users \ acm> cd C:\ Sites \ simple_cms

C:\Sites\simple_cms>rails s
←[31mBundler could not find compatible versions for gem "activerecord":
  In snapshot (Gemfile.lock):
    activerecord (4.1.1)

  In Gemfile:
    activerecord-sqlserver-adapter (= 3.2.12) x86-mingw32 depends on
      activerecord (= 4) x86-mingw32

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.
←[0m

现在,在我运行bundle update之后,又出现了另一个错误:

C:\Sites\simple_cms>bundle update
Fetching gem metadata from https://rubygems.org/...........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Bundler could not find compatible versions for gem "activesupport":
  In Gemfile:
    activerecord-sqlserver-adapter (= 3.2.12) x86-mingw32 depends on
      activerecord (= 4) x86-mingw32 depends on
        activesupport (= 4.0.0) x86-mingw32

    rails (= 4.1.1) x86-mingw32 depends on
      activesupport (4.1.1)

1 个答案:

答案 0 :(得分:1)

签出this question bundler似乎对它尝试从本地:path安装的宝石感到挑剔。您可以尝试将版本号指定为

gem 'activerecord-sqlserver-adapter', '3.2.12', :path => 'C:\Site\simple_cms\AR'

如果bundler认为无法解析此宝石,我认为您的加载路径不会出现问题。