Подключение к базе данных MSSQL из приложения Ruby on Rails, работающего в Ubuntu - PullRequest
6 голосов
/ 03 марта 2011

У меня есть ситуация, когда я пытаюсь создать веб-приложение, которое берет общее количество записей в таблице и выводит его на экран. Звучит просто, правда ...?

Основная проблема, с которой я столкнулся, заключается в том, что БД, на которую я хочу посмотреть, - это MSSQL. Я раньше не устанавливал такого рода соединение с БД от Rails, поэтому я надеялся, что кто-то может указать мне правильное направление.

Мое приложение RoR будет жить на сервере Ubuntu (и разрабатывается в системе OSX Leopard).

EDIT:

  • Следует пояснить, что БД MSSQL работает на SQL-сервере 2005 и в среде Windows-сервера.

  • Я пытался проверить руководство wiki.rubyonrails.org, но сайт, кажется, не работает (печально)

Спасибо!

Ответы [ 7 ]

8 голосов
/ 03 марта 2011

Этот вопрос Stackoverflow может помочь: Rails & MSSQL 2008 - Будем ли мы преодолевать барьеры?

В основном вам потребуется установить адаптер базы данных MSSQL (а не MySQL или Postgres, которые большинство учебных пособийшаг за шагом) и настройте свой database.yml соответствующим образом:

http://rorblog.techcfl.com/2008/04/14/ruby-on-rails-connection-to-sql-server/

http://the -banana-peel.saltybanana.com / 2008/06 / connecto-to-microsoft-sql-server-from.html

http://wiki.rubyonrails.org/database-support/ms-sql (хотя вики рельсов выглядят плохо во время написания)

PS Я предполагаю, что сервер MSSQLгде-то будет работать на отдельном сервере Microsoft.

2 голосов
/ 19 февраля 2013

Посмотрите на приведенный мной пример использования упомянутого адаптера actionrecord-sqlserver здесь

Вы можете использовать сопоставления с моделями рельсов и использовать помощники ActiveModel.

0 голосов
/ 13 октября 2016

гем под названием active-record-sql-adapter позволяет подключаться к базе данных SQL Server через ActiveRecord. Вы можете сделать что-то вроде

class RemodeDB
  establish_connection(:remote_db) #<=
  self.abstract_class = true # to avoid Rails' no associated model exception
end

тогда ваши классы наследуют соединение, вот так

class Product < RemoteDB
   self.table_name ... 
end

Обратите внимание, что для подключения к более ранним версиям SQL Server (в вашем случае 2005) вам понадобится более ранняя версия гема, которая может быть несовместима с вашей текущей версией Rails.

0 голосов
/ 09 апреля 2013

Я использовал activerecord-sqlserver-adapter с tiny_tds , и это работает!

Вот файл database.yml

development:
  adapter: sqlserver
  username: 'user'
  password: 'secret'
  dataserver: 'dbserver_name\instance_name'
  database: 'dbname'
  appname: 'my app name'
0 голосов
/ 08 января 2013

Я использовал Sequel с DBI и ODBC, и, похоже, он работает.

require "dbi"
require "sequel"
Sequel.datetime_class = DateTime
p "testing dbi"
# to setup a DSN, Start->Settings->CtlPanel->AdminTools->DataSources
conn = DBI.connect('DBI:ODBC:dsn')
p conn.connected?
p conn.select_one("SELECT @@VERSION")
conn.disconnect
p "testing sequel"
db = Sequel.odbc('(odbc_dsn_goes_here)', :db_type=>'mssql')
db.fetch("SELECT TOP 2 * FROM TABLE") do |row|
    p row
end
0 голосов
/ 15 марта 2012

Этот камень великолепен и прост в настройке: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter

0 голосов
/ 03 марта 2011

У меня будет удар, и я скажу, что вам, вероятно, потребуется подключиться к базе данных mssql через ODBC.Кажется, есть несколько драгоценных камней, которые делают это.надеюсь, у одного из них будут документы, которые помогут вам выбрать правильный путь.

ODBC rubygems

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...