Как создать собственный файл IRB для загрузки файлов, драгоценных камней и зависимостей проекта Ruby?

Кто-нибудь знает, как запустить рубиновый файл с терминала, для которого потребуется N файлов / драгоценных камней, и завершить сеанс IRB с этими файлами, которые уже были загружены в память?

Другими словами, я надеюсь на что-то вроде этого:

$ ruby project_console.rb

# project_console.rb
IRB.new do |config|
  require 'bundler/setup'
  require 'import_project_file'
  require_relative "spec/muffin_blog/app/models/random_file"
  Post.establish_connection({database: "spec/muffin_blog/db/development.sqlite3"})
end

# yay. I'm in my custom IRB session with all of the above already loaded
2.4.1 :001 >

vs

 $ irb
     2.4.1 :001 > require 'bundler/setup'
     => true
    2.4.1 :002 > require 'import_project_file'
     => true
    2.4.1 :003 > require_relative "spec/muffin_blog/app/models/random_file"
     => true
    2.4.1 :004 > Post.establish_connection({database: "spec/muffin_blog/db/development.sqlite3"})
        # this makes me sad because its manual every time I want to play around with my project.

Я разрабатываю проект Ruby, и в процессе создания этого проекта я обнаружил, что мне нужно что-то вроде rails console, которое загружает весь проект и его зависимости сборщика в память, поэтому мне не нужно делать это вручную. Я подумал, что было бы здорово, если бы я построил свою собственную супер-вещь «консоль рельсов» для целей отладки / игры с моим Ruby при его сборке.

Также я где-то читал, что есть .irbc, который я мог бы использовать, но похоже, что я бы изменил IRB глобально на своей машине - а я этого не хочу. Я хочу загрузить определенные файлы, драгоценные камни и конфигурации для каждого проекта ruby.

Как бы то ни было, я прочитал эти SO-сообщения:

Однако ни один из них, похоже, не дает ответа на мой вопрос выше.


person robskrob    schedule 12.05.2018    source источник


Ответы (1)


На самом деле очень просто:

#!/usr/bin/env ruby
require "bundler/setup"
# ...
# everything else you need
# ...
require "irb"
IRB.start

Когда вы запускаете IRB с использованием IRB.start, вам будет доступно все, что было загружено / инициализировано до него.

person Amadan    schedule 12.05.2018
comment
Большое вам спасибо за ваш ответ. Когда SO позволит мне, я отмечу это как правильное. У вас есть дескриптор на github или веб-сайт @Amadan? - person robskrob; 12.05.2018
comment
Неа, я никого не знаменит, ничего примечательного не делаю :) - person Amadan; 12.05.2018