如何让一个sinatra应用程序在rails 4中运行?

gla*_*emy 2 ruby ruby-on-rails sinatra ruby-on-rails-4

我有一个Sinatra应用程序,我想开始在Rails中构建新功能,同时仍然支持现有的Sinatra功能.我尝试了以下策略:

  1. sinatra的机架将一些请求路由到轨道,一些请求路由到sinatra
  2. sinatra的机架包括导轨
  3. rails'stackup包括sinatra.

我的许多搜索产生了rails 3,而不是4.另外,Rails 必须生成数据库而不是使用Sinatra使用的数据库(在这种情况下,Sequel gem访问Sqlite3.)一般来说,我得到的错误是关于宝石和路径.(虽然我确实重新绑定并尝试不同版本的路径.)

有关使用Rails 4的最佳方法的任何建议,同时仍支持现有的Sinatra应用程序?

car*_*nts 5

我认为Rails 3和4之间的Rails/Rack集成代码没有太大变化,所以你应该没问题.Rails on Rack Guide更详细地解释了您可以config.ru为Rails应用程序创建一个文件,如下所示:

require ::File.expand_path('../config/environment',  __FILE__)

use Rack::Debugger
use Rack::ContentLength
run Rails.application
Run Code Online (Sandbox Code Playgroud)

然后运行rackup config.ru将启动运行rails应用程序的机架服务器.

这个问题的答案指出,如果你从Rack运行Rails和Sinatra,而不是将你的Sinatra应用程序安装在Rails的routes.rb文件中,对你的Sinatra应用程序的请求根本不会通过Rails.答案还表明,在你的应用程序中config.ru你应该能够支持你的Sinatra和Rails应用程序:

map "/" do
  run RailsApp::Application
end

map "/url1" do
  run SinatraApp1
end
Run Code Online (Sandbox Code Playgroud)

当然,您必须修改路线和应用程序名称以满足您的需求和应用程序.

我建议您首先通过一个config.ru运行您的应用程序,然后询问有关您的数据库的其他问题,更详细地解释您希望数据库设置是什么以及您获得的确切错误消息是什么.