Я написал небольшой метод для запроса и получения с сервера MS SQL 2008, и я не уверен, куда поместить код в моем приложении rails.
Сценарий:
Я пишу приложение для Ruby и Rails с подключением к устаревшей серверной БД MS SQL 2008.
Много работает, как и ожидалось, и это хорошо.
Сейчас я работаю с копией устаревшей БД и отношусь к ней только для чтения. Он большой (более 7000 таблиц, в некоторых из которых более 40 миллионов записей). Я использую его «как есть» и не хочу менять какую-либо базовую схему.
Я хочу расширить некоторые специфичные для сервера функции. Например, я использую:
thing = ActiveRecord::Base.connection.exec_query(my_query_string_here)
... и это работает. В результате получается массив, который содержит хеш, и я могу получить соответствующее значение хеша, используя:
thing[0][""]
... который работает.
Итак, я подумал, что должен написать метод, чтобы сделать это проще, и я написал:
Class Tool < ActiveRecord::Base
def self.queryRDW(x)
res=ActiveRecord::Base.connection.exec_query(x)
ret=res.to_hash
return ret[0][""]
end
end
и поместите его в config / initializers / tool.rb. К сожалению, webrick жалуется на файл во время загрузки со следующей загадочной ошибкой:
.../config/initializers/tool.rb:7: syntax error, unexpected keyword_end, expecting $end (SyntaxError)
Я понимаю, что это не из-за рельсовых способов ведения дел, поэтому, пожалуйста, не напоминайте мне. (Моя борьба напоминает мне достаточно часто)
Мой вопрос:
Где я должен поместить этот код, чтобы я мог вызвать его из контроллера или представления в моем приложении rails? Это должен быть новый метод класса или что-то еще?
Большое спасибо!
Добавление:
Я изменил класс на класс (дох!)
Я переместил tool.rb в lib /
Я изменил tool.rb, чтобы теперь быть:
module Tool
def self.queryRDW(x)
res = ActiveRecord::Base.connection.exec_query(x)
res.to_hash[0][""]
end
end
но делать это в app/views/stats.html.erb
thing=queryRDW("mysql string")
возвращает мне 'неопределенную ошибку метода'
Приложение 2
Я создал каталог app / Concerns и поместил там файл tool.rb.
Когда я использую:
<%=queryRDW("myStringHere")%>
в:
app/views/stats.html.erb
Я получаю:
undefined method `queryRDW' for #<#<Class:0x0000000378ccf8>:0x00000003c1ce58>