0

シンプルなsinatraアプリでsinatra-authentication gemをセットアップしようとしていますが、sinatraが正しいビューを見つけられないという問題が発生しています。sinatra-authentication がデフォルトで haml を使用することは理解していますが、このアプリでは erb を使用しています。

これを念頭に置いて、sinatra-authenticaiton docs で、次をアプリファイルに追加することにより、テンプレートエンジンを変更できる設定があることを発見しました:

   configure do
       set :template_engine, :erb # for example
   end

これを app.rb ファイルに追加しましたが、アプリで /signup ルートにアクセスしようとすると、sinatra はまだ signup.haml を探しています。

いくつかのメモ:

  1. Gemfile に gem を含め、アプリでバンドル インストールを正常に実行しました。

     source 'https://rubygems.org'
    
     gem 'sinatra'
     gem 'data_mapper'
    
     gem 'pg'
     gem 'dm-postgres-adapter'
     gem 'sinatra-authentication'
    
  2. ビュー ファイルの場所を指定する必要があるかもしれないと示唆しているドキュメントを見つけたので、構成ブロックに以下を追加しました。

    set :sinatra_authentication_view_path, Pathname(__FILE__).dirname.expand_path + "views/"
    
  3. **追加することで、アプリファイルにgemを正確に要求したと思います

    require "sinatra-authentication"
    
    use Rack::Session::Cookie, :secret => 'mys3cr3tk3y'
    

この要旨は、sinatra アプリのルートにある app.rb ファイルの現在の表現です。 https://gist.github.com/rriggin/5378641#file-gistfile1-txt

これは、sinatra がスローするエラーのスクリーンショットです: http://cl.ly/image/0y041t0K3u3O

アプリをローカルで実行すると、期待どおりに「dm-users」テーブルがローカル データベースに作成されます。

sinatra-authentication が haml ファイルではなく erb テンプレートを適切に検索できるようにするために、私が欠落している別の構成設定はありますか。どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

0

仕様では、template_engine 設定が機能することをテストしていません。設定が呼び出される方法を見ると、正しくないと思います。

send settings.template_engine, get_view_as_string("index.#{settings.template_engine}"), :layout => use_layout? 

次のように動作する可能性があります。

send app.settings.template_engine, get_view_as_string("index.#{app.settings.template_engine}"), :layout => use_layout?

それが私が考えるものです。プロジェクトをフォークし、行を変更してGemfileに追加すると、それが機能し、そのための簡単な仕様を書くことを検討してください。そうすれば、そのプロジェクトのメインラインが改善され、問題が修正されます.

于 2013-04-13T19:08:41.473 に答える