Sinatraのページドキュメントに示唆されているように、私はSinatraでSprocketsを使用していますが、動作させることはできません。Sinatraの資産パイプラインが機能しない
私がlocalhost:4567
に行くと、ページは正しく読み込まれますが、スタイルはありません。 localhost:4567/assets/app.css
に行った場合、私はエラーが見つかりません。私はスプロケットを使用している方法で私が逃しているか、何が間違っているのだろうか?
これは私のフォルダ構造です: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_assets.rb
の
//= require normalize
//= require base
内容は以下のとおりです。lib/main.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
内容は以下のとおりです。
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
の内容は以下のとおりです。すべてのヘルプは次のようになり
$ 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!
私は間違ったことをした私は何が見えないのですか?誰でもそれを見つけることができますか?
ありがとうございました!その問題を解決しました。私はSinatraを初めて使っていて、含まれている方法について知らなかった。投稿したリンクをフォローしていましたが、他のクラスで再利用できるように、自分のモジュールにアセットを持たせたいと思っていました。 –