ruby-on-rails - 独立运行 Rails Engine

标签 ruby-on-rails ruby rack rails-engines

假设我有一个可挂载的 Rails 引擎,将其作为独立应用程序(不是任何其他应用程序的一部分)挂载到特定端点的最小配置是什么?

这最好只是一个简单的 Rack 应用程序,这样我就可以选择合适的 Web 服务器(unicorn、puma 等)。

最佳答案

由于您没有提供要使用的特定 Rails 引擎,我将创建一个示例引擎。

$ rails plugin new blorgh --mountable
$ cd blorgh

现在,由于 Rails 引擎是一个 Rack 应用程序并且可以独立运行。您只需要添加一个包含以下内容的 config.ru 文件:

# This file is used by Rack-based servers to start the application.
require 'rubygems'
require 'bundler'
require 'rails'
Bundler.require(:default)
run Blorgh::Engine

有了它,您就拥有了无需任何额外应用程序即可独立运行的 Rails 引擎。下面是如何运行它

$ bundle exec rackup config.ru
[2015-11-16 09:43:26] INFO  WEBrick 1.3.1
[2015-11-16 09:43:26] INFO  ruby 2.2.3 (2015-08-18) [x86_64-darwin14]
[2015-11-16 09:43:26] INFO  WEBrick::HTTPServer#start: pid=38105 port=9292

现在打开它,转到 localhost:9292。你会得到一个 404 not found,这是有道理的,因为这个引擎没有路线。但您可以轻松添加。

此外,这也可以部署到 Heroku 等托管服务提供商。他们将检测 config.ru 文件,其他配置将自动发生。

如果这回答了您的问题,请告诉我。

关于ruby-on-rails - 独立运行 Rails Engine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33726240/

相关文章:

ruby-on-rails - Rails 3.2.8 "NotImplementedError: method ` backtrace' 在意外的 T_NODE 对象上调用”错误

ruby-on-rails - 有源模型序列化程序 : exclude attributes when rendering as a relationship

javascript - rails : Make a div element visible/invisible with onchange after changing a collection_select field

ruby - 将 gem 上传到 Geminabox 时出现问题

ruby-on-rails - 如何保护 link_to @variable 跨站脚本漏洞

html - HTML 标题 =""中的 Ruby 标签

python - Ruby 哈希相当于 Python dict setdefault

ruby-on-rails - rspec & Rails 3 找不到模型对象

ruby - 当我访问 AppFog 上的 Sinatra 应用程序时显示 "Forbidden"消息

ruby - 如何使用 Nginx、Passenger、Sinatra 创建多个位置