Как указать пользовательский каталог Sass с помощью Sinatra - PullRequest
4 голосов
/ 28 мая 2010

Вместо того, чтобы обслуживать мои файлы Sass из каталога по умолчанию 'views', я бы хотел изменить это на /assets/sass

Следующие попытки находятся в моем главном файле ruby ​​root в приложении:

Попытка 1:

set :sass, Proc.new { File.join(root, "assets/sass") }

get '/stylesheet.css' do
    sass :core
end

При этом я получаю следующую ошибку:

 myapp.rb:17 NoMethodError: undefined method `merge' for "/Users/x/x/x/mysinatraapp/assets/sass":String

Попытка 2:

get '/stylesheet.css' do
    sass :'/assets/sass/core'
end

Попытка 3:

get '/stylesheet.css' do
    sass :'/assets/sass/core'
end

Оба возвращают следующую ошибку:

Errno::ENOENT: No such file or directory - ./views/assets/sass/core.sass

Попытка 4:

get '/stylesheet.css' do
    sass :'../assets/sass/core'
end

Это работает! однако, должно быть что-то вроде set :sass, Proc.new { File.join(root, "assets/sass") }, которое настраивает это для меня?

Ответы [ 5 ]

3 голосов
/ 06 ноября 2012

Задайте каталог шаблонов, а затем вручную отрендуйте Sass :: Engine.

require 'sinatra'
require 'sass'

SASS_DIR = File.expand_path("../stylesheets", __FILE__)

get "/" do
  erb :index
end

get "/stylesheets/:stylesheet.css" do |stylesheet|
  content_type "text/css"
  template = File.read(File.join(SASS_DIR, "#{stylesheet}.sass"))
  Sass::Engine.new(template).render
end
1 голос
/ 28 октября 2012

Возможно, вы захотите взглянуть на эту статью. http://railscoder.com/setting-up-sinatra-to-use-slim-sass-and-coffeescript/

Пройдя по нескольким сайтам, я смог добиться, чтобы мои файлы sass находились в другом каталоге, а не в каталоге 'views' в этой статье.

1 голос
/ 30 мая 2010

На данный момент такого способа не существует, поскольку в настоящее время Sinatra принимает только один каталог просмотра.

Вы можете попробовать использовать sinatra-compass и set :compass, :sass_dir => 'assets' и поместить в папку просмотра только один файл sass, который будет просто @import stylesheet.sass или вы можете перезаписать #sass:

helpers do
  def sass(template, *args)
    template = :"#{settings.sass_dir}/#{template}" if template.is_a? Symbol
    super(template, *args)
  end
end

set :sass_dir, '../assets'
0 голосов
/ 30 мая 2010

Это, вероятно, не поможет, так как я предполагаю, что у вас есть другие вещи в views, которые вы хотите оставить на месте, но вы также можете изменить каталог views ...

set :views, File.dirname(__FILE__) + '/assets'

Тогда вы могли бы сделать:

get '/stylesheet.css' do
    sass :'sass/core'
end
0 голосов
/ 28 мая 2010

В настоящее время я не могу проверить это сам, но вы пробовали следующее.

set :sass, File.dirname(__FILE__) + '/assets'

РЕДАКТИРОВАТЬ : Ссылка Sass также может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...