Ответ 1
Передайте имя script команде ruby
:
bundle exec ruby script_name
Если вам нужна среда Rails:
bundle exec rails runner script_name
У меня есть Ruby script, называемый foo.rb, и я хочу запустить его в контексте среды bundler. Как?
bundle exec foo.rb
не работает, потому что exec ожидает оболочку script.
Передайте имя script команде ruby
:
bundle exec ruby script_name
Если вам нужна среда Rails:
bundle exec rails runner script_name
Например, я хотел использовать ту же версию Rubocop, что и приложение Rails, а не самую последнюю систему, поэтому сделаем это в script:
require 'bundler'
Bundler.require
# ...
Разрешено использовать мою версию приложения rubocop.
Вы можете просто сделать его script - добавить
#!/usr/bin/env ruby
в начало файла и сделать его исполняемым. Тогда bundle exec foo.rb
будет работать как ожидалось.
(Это относится к unix или OSX - не уверен в Windows)
См. http://bundler.io/v1.15/man/bundle-exec.1.html#Loading
Также см. https://coderwall.com/p/kfyzcw/execute-ruby-scripts-directly-without-bundler-exec для запуска сценариев ruby с включенными зависимостями без необходимости bundle exec