Вы можете попробовать load
: http://www.ruby -doc.org / core / classes / Kernel.html # M001417
Вот один пример
# in your controller
def create
load('/path/to/your/file.rb')
end
Тем не менее, я бы сказал, что в целом плохая практика вызывать код Ruby из Rails, запуская внешний скрипт. Я думаю, вам лучше разбить ваш файл Ruby на две части:
- Тот, который инкапсулирует функциональность скрипта в классах и / или модулях.
- Тот, который вызывает указанные классы / модули из командной строки.
Затем в приложении Rails просто require
# 1 и используйте классы / модули.
Например, предположим, что ваш скрипт в данный момент называется simple.rb и выглядит так:
# simple.rb
puts 'Hello, world!'
Затем вы должны создать hello_world.rb
и сделать это:
# hello_world.rb
class HelloWorld
def say_it
puts 'Hello, world!'
end
end
Вы бы заменили содержимое simple.rb
на это:
require 'hello_world.rb'
HelloWorld.new.say_it
Тогда в вашем контроллере вы можете обойти simple.rb
и просто использовать класс HelloWorld
напрямую: