2

Sinatra アプリを持っています。既存の Sinatra 機能をサポートしながら、Rails で新しい機能の構築を開始したいと考えています。私は次の戦略を試しました:

  1. シナトラのラックアップは、一部のリクエストをレールにルーティングし、一部をシナトラにルーティングします
  2. シナトラのラックアップにはレールが含まれています
  3. rails のラックアップにはシナトラが含まれています。

私の検索の多くは、Rails 4 ではなく 3 でした。さらに、Sinatra が使用していたデータベースを使用するのではなく、Railsデータベースを生成する必要がありますか (この場合、Sqlite3 にアクセスするために Sequel gem を使用します)。宝石と道。(ただし、再バンドルして、さまざまなバージョンのパスを試しました。)

既存の Sinatra アプリをサポートしながら Rails 4 を使用するための最良の方法について何か提案はありますか?

4

2 に答える 2

5

Rails/Rack 統合コードは Rails 3 と 4 の間であまり変わっていないと思いますので、問題ないはずです。Rails on Rack ガイドconfig.ruでは、次のような Rails アプリケーション用のファイルを作成できることについて詳しく説明しています。

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

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

次に実行rackup config.ruすると、Rails アプリを実行するラック サーバーが起動します。

この質問への回答は、Sinatra アプリを Rails のファイルにマウントするのではなく、Rack から Rails と Sinatra を実行するとroutes.rb、Sinatra アプリへのリクエストが Rails をまったく通過しないことを示しています。回答はconfig.ru、Sinatra アプリと Rails アプリの両方をサポートするために、これを行うことができるはずであることも示しています。

map "/" do
  run RailsApp::Application
end

map "/url1" do
  run SinatraApp1
end

もちろん、ニーズとアプリケーションに合わせてルートとアプリケーション名を変更する必要があります。

最初に 1 つの config.ru を介してアプリを実行することをお勧めします。次に、データベースについて別の質問をして、データベースのセットアップをどのようにしたいのか、どのようなエラー メッセージが表示されるのかを詳しく説明してください。

于 2013-11-04T01:30:51.500 に答える
1

Rails はデータベースを作成する必要はなく、データベースを直接使用する必要さえありません。ActiveRecord を使用せずに新しい Rails アプリを生成するには、 を実行しrails new APP_PATH --skip-active-recordます。次に、Rails アプリから直接データベースを使用する代わりに、要求を Sinatra アプリに送信し、Sinatra アプリにデータベース関連のすべてを制御させます。

于 2013-11-04T01:24:44.900 に答える