Ich benutze Ritzel mit Sinatra, wie in Sinatras Seite docs vorgeschlagen, aber ich kann es nicht funktionieren.Sinatra Asset-Pipeline, kann es nicht funktionieren
Wenn ich zu localhost:4567
gehe, lädt die Seite korrekt, aber ohne Stile. Wenn ich zu localhost:4567/assets/app.css
gehe, erhalte ich einen nicht gefundenen Fehler. Ich frage mich, was ich vermisse oder was falsch ist, wenn ich Kettenräder benutze?
Dies ist meine Ordnerstruktur:
├── 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
Der Inhalt app.css
sind:
//= require normalize
//= require base
Der Inhalt app_assets.rb
sind:
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
Der Inhalt lib/main.rb
sind:
require 'sinatra'
require 'sprockets'
require 'app_assets'
class Main < Sinatra::Base
set :views, "#{settings.root}/../views"
get '/' do
erb :index
end
end
Die Datei views/index.erb
enthält die Zeile:
<link rel="stylesheet" href="assets/app.css">
und der Inhalt von bin/app
sind:
#!/usr/bin/env ruby
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
require 'sinatra'
require 'sprockets'
require 'app_assets'
require 'main'
Main.run!
Was ich Typisierung laufen:
$ bin/app
Jede Hilfe wäre Ich bin mir sicher, dass ich etwas falsch gemacht habe aber ich kann nicht sehen was. Kann es jemand finden?
Thank you! Das hat das Problem gelöst. Ich bin neu in Sinatra und wusste nichts über die eingeschlossene Methode. Ich folgte dem von Ihnen geposteten Link, wollte aber die Assets in einem eigenen Modul haben, damit ich sie in anderen Klassen wiederverwenden konnte. –