Как создать собственный файл IRB для загрузки файлов, гемов и зависимостей проекта Ruby? - PullRequest
0 голосов
/ 12 мая 2018

Кто-нибудь знает, как запустить файл 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 >

против

 $ 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, которое загружает весь проект и его зависимости от компоновщика в память, поэтому мне не нужно делать это вручную , Я подумал, что было бы замечательно, если бы я создал свою собственную супер-вещь 'консоль rails' для целей отладки / игры с моим рубином при его создании.

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

Для чего это стоит, я прочитал эти ТАК сообщения:

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

1 Ответ

0 голосов
/ 12 мая 2018

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

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

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

...