2

私は現在、sinatra でアプリを作成しており、ブートストラップを実装するために何時間も取り組んでおり、Rails の方がはるかに簡単であることに気付きました。

とにかく、Web サーバーを実行して / に移動すると<%= stylesheet_link_tag 'app', media: 'all' %>、app.erb ビュー (webapp のインデックス) に入れた行に関連するエラーが表示されます。この行は、scss ファイルを assets/stylesheets フォルダーにロードするためのもので、ファイルにはブートストラップの @import 値が含まれています。

私は sinatra-asset-pipeline gem を使用しており、github ページの指示に従って正しくセットアップしました。私は過去4時間、多くのことを試してきましたが、何もうまくいきませんでした. 最も重要なファイルのコードは次のとおりです。

assets/stylesheets/app.scss :

@import "bootstrap-sprockets";
@import "bootstrap";

ビュー/app.erb :

<!DOCTYPE html>
<html>

  <head>
    <title>Salah Kayali</title>
    <%= stylesheet_link_tag 'app', media: 'all' %>
    <%= javascript_include_tag 'app' %>
    <meta name="viewport" content="width=device-width, initial-scale=1">
  </head>

  <body>
    <%= partial :header %>
  </body>

</html>

app.rb :

require 'sinatra/partial'
require 'rubygems'
require 'sinatra'
# set :bind, '0.0.0.0'
require 'sinatra/asset_pipeline'

class App < Sinatra::Base
    register Sinatra::Partial
    configure do
    set :assets_precompile, %w(app.js app.scss *.png *.jpg *.svg *.eot *.ttf *.woff)
    set :assets_css_compressor, :sass
    set :assets_js_compressor, :uglifier
        register Sinatra::AssetPipeline

        if defined?(RailsAssets)
      RailsAssets.load_paths.each do |path|
        settings.sprockets.append_path(path)
      end
    end
  end

  enable :partial_underscores
    set :partial_template_engine, :erb

  get '/' do
    erb :app
  end
  run! if __FILE__ == $0
end

config.ru :

require 'rubygems'
require 'bundler'
Bundler.require
run App

レーキファイル:

require 'sinatra/asset_pipeline/task'
require './app'

Sinatra::AssetPipeline::Task.define! App

Gemfile :

source "https://rubygems.org"
ruby "2.2.3"

gem 'bundler', '~> 1.10.6'

gem 'sinatra', require: 'sinatra/base'
gem 'sinatra-asset-pipeline', require: 'sinatra/asset_pipeline'

gem 'thin', '~> 1.6.4'

gem 'sass', '~> 3.4.18'

gem 'coffee-script', '~> 2.4.1'

gem 'uglifier', '~> 2.7.2'

gem 'rack-coffee', '~> 1.0.3'

gem 'sinatra-partial'

source 'https://rails-assets.org' do
  gem 'rails-assets-jquery'
  gem 'rails-assets-bootstrap-sass'
end

本当にどうしたらいいのかわからないので、誰か助けていただければ幸いです。私は通常、アセットパイプラインがすでに存在し、すべてを処理するレールに慣れています。ただし、レールで「自動的に」何かを作成すると実際に何が起こるかを本当に理解できるように、sinatra でこの webapp を作成するように強制しています。

これは、私のブラウザーでのエラー出力のスクリーンショットへのリンクです: http://puu.sh/ktUIA/1d8396b034.png

4

1 に答える 1

1

あなたの問題は、stylesheet_link_tagjavascript_include_tagが Rails の基礎となる宝石の 1 つである ActionView の一部であることです (つまり、 を参照ActionView::Helpers::AssetTagHelper)。

ドキュメントによるとsinatra-asset-pipeline

すべてが整ったら、sprockets-helpers が提供するすべてのヘルパーを使用できます

例を見ると、次のsprocket-helpersようにする必要があります。

<link rel="stylesheet" href="<%= stylesheet_path 'application' %>">
<script src="<%= javascript_path 'application' %>"></script>

したがって、探しているのはstylesheet_pathandjavascript_pathではなくstylesheet_link_tagandjavascript_include_tagです。

于 2015-09-30T20:27:17.580 に答える