Я хочу подделать API с небольшим приложением Sinatra, после this method. Значение У меня есть приложение Rails, и в папке спецификации/поддержки, очень простой Синатра приложение:Приложение Sinatra в Rails 4.1 config
module FakePrograms
class Application < Sinatra::Base
get "/API/V1/programs" do
{
programs: [
...
]
}.to_json
end
end
end
Часть цели является запуск этого приложения локально, так что я могу работать на моем приложение Rails с подделкой API. Проблема: когда я ruby spec/support/fake_programs.rb
, приложение может не загрузиться, и я получаю
config/puma.rb:14:in `block in _load_from':
uninitialized constant
#<Class:#<Puma::DSL:0x007fac0b0e0380>>::ActiveRecord (NameError)
Похоже Синатра загружается с помощью моей конфигурации Rails. Мне не нужен ActiveRecord и Puma для моего поддельного API.
Я читал this question и this other one, но они в другом контексте, потому что они нуждаются в их приложении Sinatra для совместного использования маршрутов с помощью приложения Rails.
Содержание конфигурации/puma.rb:
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)
threads threads_count, threads_count
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
# Worker specific setup for Rails 4.1+
# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
ActiveRecord::Base.establish_connection
end
Я смотрел на файл config.ru, но @Max прав, это не коррелируют.
не видим, почему 'config.ru' читается, если вы вызываете рубиновый файл напрямую с помощью' ruby spec/support/fake_programs.rb'. Это действительно то, что происходит? Возможно, покажите свои 'config.ru' и' config/puma.rb'. –
Вы правы, вопрос обновлен. – Ruff9