2016-03-03 2 views
3

Я очень устал писать эту строку каждый раз, когда я хочу, чтобы открыть консоль Rails:Как запустить скрипт перед каждым вызовом консоли Rails?

irb(main):001:0> ActsAsTenant.current_tenant = User.find(1).account 

Есть ли способ запустить команду/скрипт перед каждым «рельсами C»/«ЭС» вызов?

Заранее благодарен!

ответ

2

Поместите код, который вы хотите выполнить в .irbrc файл в корневой папке проекта:

echo 'ActsAsTenant.current_tenant = User.find(1).account' >> .irbrc 
bundle exec rails C# ⇐ the code in .irbrc got executed 

Sidenote: Используйте Pry вместо глупой IRB. Попробуйте, и вы никогда не откажетесь.

+0

Согласен. Это лучший вариант, на мой взгляд. BTW, @mudasobwa, приятно познакомиться с вами здесь после нашего обсуждения на habrahabr. :) –

+0

@mudasobwa спасибо. Я хочу добавить, что мы должны выполнить его из локального файла .irbrc, иначе мы получим ошибку при каждом запуске irb (not rails console). [Здесь] (http://samuelmullen.com/2010/04/irb-global-local-irbrc/) - это инструкции. – shunter

1

Вы можете поместить свой код установки в гь файле, например:

foo.rb:

def irb_setup 
    ActsAsTenant.current_tenant = User.find(1).account 
end 

запуск IRB как это:

irb -r ./foo.rb 

и вызвать метод (который будет автозаполнять прижимной язычок)

2.3.0 :001 > init_irb 

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

+0

На самом деле, это хорошая идея, но консоль Rails не предоставляет нам эту функцию. У меня есть только одна идея, просто для fork irb, добавьте автозагрузку по умолчанию и отправьте ее в приложение, как указано [здесь] (https://github.com/rails/rails/blob/7f18ea14c893cb5c9f04d4fda9661126758332b5/railties/lib/rails/commands/ console.rb # L36) – shunter

+0

'IRB' автоматически запускает файлы' ~/.irbrc' и './. irbrc' при запуске. – mudasobwa

Смежные вопросы