ruby - Sinatra 找不到 View 目录

标签 ruby gem sinatra runtime-error

我正在尝试以一种更类似于普通 Ruby Gem 结构的方式构建我的 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 - 没有这样的文件或目录-/home/dev/indexer/lib/views/index.erb

有问题的几行是:

get '/' do
  erb :index
end

我该如何解决这个问题?

最佳答案

如果不查看 rb 文件的内容,就很难猜出哪里出了问题。如果您的路由是在应用程序根目录下的子文件夹中的 rb 文件中定义的,则必须显式设置 views 文件夹。

在你的例子中,假设 /app.rb 是设置基本配置的文件,你必须在那里。

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

关于ruby - Sinatra 找不到 View 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14434061/

相关文章:

ruby - OSX 没有使用最新的 Ruby 版本

ruby - 尝试在 Ubuntu 10.10 上运行 mongo3 gem。帮助!

ruby-on-rails - 检验 gem 的正确方法

ruby - Rack::Builder 的未定义方法 `require'

ruby - 如何在 sinatra 上设置 SSL 证书

ruby - Heroku 内部服务器错误 - ruby​​/Sinatra/Postgresql

ruby-on-rails - 类似查找查询的 DRY 实例变量

ruby-on-rails - 如果在 Ruby 中包含 "+"到 %2B,如何对电子邮件进行编码

ruby-on-rails - Rails 功能测试用例和上传文件到 ActionDispatch::Http::UploadFile

ruby - 如何在 irb 上使用特定的 gem 版本?