Я написал небольшой метод для запроса и получения с сервера MS SQL 2008, и я не уверен, куда поместить код в моем приложении rails.Где и как я должен добавить этот новый метод «не-rails-way» в моем приложении 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
и поместить его в конфиге/инициализаторах/tool.rb К сожалению, WEBrick жалуется на файл во время загрузки с следующие загадочные ошибки:
.../config/initializers/tool.rb:7: syntax error, unexpected keyword_end, expecting $end (SyntaxError)
Я признаю, что это не вне коробки рельсы-способ делать вещи, поэтому, пожалуйста, не напоминай мне. (Моя борьба напоминает мне достаточно часто)
Моим вопрос:
Где я должен поставить этот код, чтобы я мог вызывать его изнутри контроллера или представлений в моих рельсах приложении? Должен ли это быть новый метод класса или что-то еще?
Большое спасибо!
Добавление:
я изменил класс для класса (! DOH)
я переехал 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")
получает мне 'Неизвестная ошибка метода'
Addendum 2
Я сделал приложение/проблемы с каталогом и поместил tool.rb там.
Когда я использую:
<%=queryRDW("myStringHere")%>
в:
app/views/stats.html.erb
я получаю:
undefined method `queryRDW' for #<#<Class:0x0000000378ccf8>:0x00000003c1ce58>
omg. Благодарю. Это фиксировало «неожиданное ключевое слово_енд», и начинается webrick. Теперь, когда я пытаюсь вызвать queryRDW в представлении, я получаю undefined метод 'queryRDW 'для # <# <Класс: 0x000000036b75d0>: 0x00000003632718> Какой синтаксис я должен использовать? –
Я не видел этот комментарий, пока не обновил свой ответ. Можете ли вы изменить свой вопрос и добавить код в представление, которое генерирует эту ошибку? – Brandan
Готово. Спасибо, что помогли мне здесь. –