#ruby-on-rails #shopify #ruby-on-rails-5
#ruby-on-rails #shopify #ruby-on-rails-5
Вопрос:
Я пытаюсь переопределить новый метод ShopifyApp, но не уверен, с чего начать. В принципе, мне нужно добавить еще одно поле, чтобы получить params
:
/lib/shopify_app/sessions_concern/new.rb:
module ShopifyApp
module SessionsConcern
module New
def new
if params[:field] == "abc"
authenticate if params[:shop].present?
end # or else ...
end
end
end
end
Чтобы использовать этот модуль, я бы сделал что-то подобное в контроллере:
ShopifyApp::SessionsConcern.prepend ShopifyApp::SessionsConcern::New
Но нет, где это использовать. Как сделать это правильно?
Ответ №1:
Переопределение есть переопределение. Следующее сделает это за вас без каких-либо prepend
изменений (при условии, что вы загружаете код из lib
каталога):
# lib/shopify_monkeypatching.rb
module ShopifyApp
module SessionsConcern
def new
if params[:field] == "abc"
authenticate if params[:shop].present?
end # or else ...
end
end
end
Комментарии:
1. Спасибо. Я этого не делаю. В моем
new
методе я поставил aputs
, но ничего не печатается в консоли, когда я перехожу на/login
страницу.2. @Sylar вы уверены, что загружаете lib-файлы? просто из любопытства поместите весь код, скажем,
application_controller.rb
(после последнегоend
) и посмотрите, появится ли вашraise
или что-то еще3. ДА. Он печатает при
application_controller.rb
входе, но не при входе/lib/new.rb
4. @Sylar теперь мы знаем, что он работает правильно. Теперь ваша задача — заставить Rails загрузить этот файл. В качестве альтернативы вы можете создать каталог
app/monkey_patches/
и поместить туда этот файлapp/monkey_patches/shopify_session.rb
. Все файлы изapp
каталога загружаются автоматически5. @Sylar отлично, что вы это поняли!