簡體   English   中英

如何使Sinatra應用程序在Rails 4中運行?

[英]how to make a sinatra app run in rails 4?

我有一個Sinatra應用程序,我想開始在Rails中構建新功能,同時仍然支持現有的Sinatra功能。 我嘗試了以下策略:

  1. sinatra的機架將一些請求路由到rails,將一些請求路由到sinatra
  2. sinatra的機架包括導軌
  3. rails的架子包括sinatra。

我的許多搜索都導致了Rails 3,而不是4。此外,Rails 是否必須生成數據庫而不是使用Sinatra正在使用的數據庫(在這種情況下,是使用Sequel gem訪問Sqlite3。)通常,我遇到的錯誤是關於寶石和路徑。 (盡管我確實進行了捆綁,並嘗試了不同版本的路徑。)

在仍支持現有Sinatra應用程序的同時使用Rails 4的最佳方法有何建議?

我認為Rails 3和4之間的Rails / Rack集成代碼沒有太大變化,因此您應該沒問題。 《 Rails on Rack指南》更詳細地說明了您可以為Rails應用程序制作一個config.ru文件,如下所示:

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

use Rack::Debugger
use Rack::ContentLength
run Rails.application

然后運行rackup config.ru將啟動運行Rails應用程序的機架服務器。

對這些問題的答案這個問題指出,如果從機架運行Rails和Sinatra的,而不是安裝在Rails的你西納特拉應用routes.rb文件,請您西納特拉的應用程序將無法通過Rails的去的。 答案還表明,在您的config.ru您應該能夠同時支持Sinatra和Rails應用程序:

map "/" do
  run RailsApp::Application
end

map "/url1" do
  run SinatraApp1
end

當然,您必須修改路由和應用程序名稱以匹配您的需求和應用程序。

我建議您先通過一個config.ru運行您的應用程序,然后再問另一個有關您的數據庫的問題,更詳細地說明您希望數據庫設置是什么,以及得到的確切錯誤消息是什么。

Rails不需要創建數據庫,甚至不需要直接使用一個數據庫。 要生成沒有ActiveRecord的新Rails應用程序,請運行rails new APP_PATH --skip-active-record 然后,與其直接從Rails應用程序中使用數據庫,不如將請求發送到Sinatra應用程序,並讓Sinatra應用程序控制與數據庫相關的所有內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM