6

通常のRubyGem構造に似た方法でSinatraアプリを構造化しようとしています。次のファイルツリーがあります。

.
├── app.rb
├── config.ru
├── Gemfile
├── Gemfile.lock
├── helpers
│   ├── dbconfig.rb
│   ├── functions.rb
│   └── init.rb
├── hidden
│   └── Rakefile
├── lib
│   ├── admin.rb
│   ├── api.rb
│   ├── indexer.rb
│   ├── init.rb
│   └── magnet.rb
├── models
│   ├── init.rb
│   ├── invite.rb
│   ├── tag.rb
│   ├── torrent.rb
│   └── user.rb
├── public
│   ├── css
│   │   ├── reset.css
│   │   └── style.css
│   ├── i
│   ├── img
│   │   ├── bg.jpg
│   │   ├── dl-icon.png
│   │   ├── logo.png
│   │   ├── logo-public.png
│   │   ├── magnet-icon.png
│   │   ├── text-logo.png
│   │   ├── text-logo-public.png
│   │   └── upload-icon.png
│   └── js
│       ├── main.js
│       └── torrents.js
├── README.md
├── SPEC.md
├── tmp
│   └── restart.txt
├── TODO.md
└── views
    ├── error.erb
    ├── footer.erb
    ├── header.erb
    ├── index.erb
    ├── list.erb
    ├── nav.erb
    ├── text.erb
    └── upload.erb

レンダリングしようとしているアプリファイルがありますがlib/、Passengerサーバーを(再)起動すると次のようになります。Errno::ENOENT - No such file or directory - /home/dev/indexer/lib/views/index.erb

問題のある数行は次のとおりです。

get '/' do
  erb :index
end

どうすればこれを修正できますか?

4

3 に答える 3

6

ファイルの内容を見rbないと、何が問題なのかを推測するのは困難です。rbアプリケーションのルート内のサブフォルダー内のファイルでルートが定義されている場合は、viewsフォルダーを明示的に設定する必要があります。

/app.rbあなたの場合、ファイルが基本構成を設定していると仮定すると、そこに設定する必要がありますviews(またはパブリックフォルダーのようなもの)。

class MyApp < Sinatra::Base
  set :views, File.dirname(__FILE__) + '/views'
  set :public_folder, File.dirname(__FILE__) + '/public'
end

それ以外の場合、Sinatra は、関連するパスの後続のサブフォルダーを調べます。さらに、後続のルート ファイルは同じクラスを拡張する必要があります。この場合、MyApp. たとえば、./lib/admin.rb

class MyApp < Sinatra::Base
  get "/blah" do
    "blah blah"
  end
end
于 2013-01-21T09:56:14.603 に答える
5

構成ブロックでviewsディレクトリへのパスを指定します。

set :views, "#{settings.root}/../views"

http://www.sinatrarb.com/configuration.html#__view_template_directoryを参照してください

于 2013-01-21T07:28:50.200 に答える
0

さて、私は何が悪いのかを見つけました!必要なのは、lib/フォルダー内のクラスを、から継承したメインBrightswipeクラスから継承することだけでしたSinatra::Base

于 2013-01-21T17:30:22.890 に答える