如何阻止Padrino将已编译的SASS放入我的公共/目录中?或者我应该?

时间:2013-02-11 16:34:01

标签: ruby sinatra padrino

我正在玩Padrino,目前正在尝试一个非常小的网站,没有数据库,只有app /目录下的一些HAML和SASS文件。

我注意到每次渲染链接到.sass文件中定义的样式表的页面时,它都会将样式表编译为.css并将其存储在public /。

这一切都很好,但我也有一些静态资产存储在公共/中,包括图像和其他一些手写的.css文件。

这意味着我的公共/目录变成了我放置的东西和Padrino编译的东西的混合。因此,查看将显示一堆.css文件,其中一些是编译的.sass文件,其中一些是我的实际主要静态资产。这很令人困惑。

有没有办法可以阻止Padrino(或者Sinatra,或者Rack,或其他任何东西)在开发过程中保存这些编译过的文件,并保持公开/清洁?

或者,有人可以解释为什么我要求的是一个坏主意/设计/我应该学会爱它吗? : - )

感谢。

2 个答案:

答案 0 :(得分:0)

我不知道如何为Padrino设置SASS设置,我看了一下,也找不到任何有用的东西。以这种方式运行它会让我感到有些紧张,它可能很容易让人感到困惑和无益,如果资产名称发生冲突怎么办?

你可以做的是通过Padrino添加SASS,然后通过--watch开关或Guard之类的东西自行运行。这样你也可以在公共目录中指定不同的子文件夹(images / css / js等),这就是我所做的(虽然它确实意味着你需要记住在描述链接时将子文件夹添加为路径的一部分)。应用程序甚至不需要知道你正在使用SASS,而预编译,当这很简单时,肯定比你现在得到的那种编译要好(IMO)。

您可以尝试使用Padrino mailing list获取有关设置的帮助。

答案 1 :(得分:0)

使用padrino-sprockets gems我还想将默认/ public / stylesheets目录更改为/ assets / stylesheets,其中sprockets选择它们。我发现使用-c sass选项生成的padrino项目有一个/lib/sass_plugin.rb文件,其中包含以下内容:

# Enables support for SASS template reloading for rack.
# Store SASS files by default within 'app/stylesheets/sass'
# See http://nex-3.com/posts/88-sass-supports-rack for more details.

module SassInitializer
  def self.registered(app)
    require 'sass/plugin/rack'
    Sass::Plugin.options[:template_location] = File.join(Padrino.root, "app/stylesheets")
    Sass::Plugin.options[:css_location] = File.join(Padrino.root, "public/stylesheets")
    app.use Sass::Plugin::Rack
  end
end 

编辑:css_location路径并重启Padrino就行了!