【问题标题】:How can I use a Rails engine inside a Sinatra app?如何在 Sinatra 应用程序中使用 Rails 引擎?
【发布时间】:2013-09-06 15:23:03
【问题描述】:

我创建了一个基本的 Rails 引擎(我使用的是 Rails 4),并通过 Gemfile 将它集成到我的主要 Rails 应用程序中:

gem 'app_core', :path => '../app_core'

我还将它添加到我的 Sinatra 应用程序中,并且 bundle install 说 gem 安装在那里。我正在我的 Sintra 应用程序中对此进行测试,如下所示:

get '/products.?:format?' do
  AppCore::Product.all.to_json
end

当我这样做时,我得到:

NameError at /products
uninitialized constant AppCore::Product

任何想法如何解决这个问题?是否可以将引擎集成到 Sinatra 应用程序中?

【问题讨论】:

    标签: ruby-on-rails-3 sinatra rails-engines


    【解决方案1】:

    我能够使用 gem 而不是引擎来完成这项工作。我根本无法让 Sinatra 使用 Rails 引擎,但它会使用自定义 gem。所以,我将它添加到 Rails 应用程序和 Sinatra 应用程序 Gemfiles:

    gem 'app_core', :path => '../app_core'
    

    然后在 Sinatra 应用程序主文件中我必须这样做:

    require 'bundler/setup'
    require 'app_core'
    

    瞧!

    【讨论】:

    • “我根本无法让 Sinatra 使用 Rails 引擎,但它会使用自定义 gem”是什么意思。您是否修改了 Rails 引擎以将其转换为“自定义 gem” '?
    • 我刚刚创建了一个 gem 并在我的 Sinatra 项目中使用了该 gem。没有什么花哨。您需要我详细说明吗(如果需要,很乐意这样做)?
    • 酷。所以你刚刚从头开始创建了一个与 Sinatra 兼容的新 gem?
    • 好吧,我不需要做任何额外的事情来使它与 Sinatra、AFAIK 兼容。看看这个 gem 项目:github.com/chaddjohnson/trading_core。这个没有在 Sinatra 应用程序中使用,但我相信它的设置完全相同。
    猜你喜欢
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多