我正在使用Sinatra的鏈輪,正如Sinatra的頁面文檔中所建議的,但我無法使其工作。Sinatra資產管道,無法使其工作
當我轉到localhost:4567
時,頁面加載正確,但沒有樣式。如果我去localhost:4567/assets/app.css
,我得到一個未發現的錯誤。我不知道我錯過了什麼,或者我使用鏈輪的方式有什麼問題?
這是我的文件夾結構:
├── assets
│ ├── css
│ │ ├── app.css
│ │ ├── base.css
│ │ └── normalize.css
├── bin
│ └── app
├── lib
│ ├── app_assets.rb
│ └── main.rb
├── spec
│ ├── spec_helper.rb
│ └── main_spec.rb
├── views
│ └── index.erb
├── Gemfile
├── Gemfile.lock
├── Rakefile
├── .rspec
└── .ruby-version
的app.css
內容是:
//= require normalize
//= require base
的app_assets.rb
內容是:
module AppAssets
def self.environment root_path
environment = Sprockets::Environment.new root_path
environment.append_path './assets/css/'
environment
# get assets
get '/assets/*' do
env['PATH_INFO'].sub!('/assets', '')
settings.environment.call(env)
end
end
end
的lib/main.rb
內容是:
require 'sinatra'
require 'sprockets'
require 'app_assets'
class Main < Sinatra::Base
set :views, "#{settings.root}/../views"
get '/' do
erb :index
end
end
文件views/index.erb
包含行:
<link rel="stylesheet" href="assets/app.css">
和bin/app
內容是:
#!/usr/bin/env ruby
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
require 'sinatra'
require 'sprockets'
require 'app_assets'
require 'main'
Main.run!
它在我奔跑打字:
$ bin/app
任何幫助將是我很肯定,我犯了一些錯誤但我看不到。任何人都可以發現它嗎?
謝謝!解決了這個問題。我是Sinatra的新手,並不知道所包含的方法。我正在關注您發佈的鏈接,但希望將這些資源放在自己的模塊中,以便我可以在其他類中重用它。 –