Ruby on rails 创建rake任务以编译@import';这是宝石做的

Ruby on rails 创建rake任务以编译@import';这是宝石做的,ruby-on-rails,sass,rake,sprockets,Ruby On Rails,Sass,Rake,Sprockets,我想创建一个rake任务,编译一些引用gems中@import的SASS文件,以加快我的开发工作流程 一些背景 我们最近在rails应用程序中添加了一个新主题,而sass样式表在开发环境中确实使assset管道陷入困境(导致频繁超时) 该主题严重依赖于导入和混合,这将是非常乏味的尝试和手动转换成文件,我们可以只需要*=一些指南建议的 这些文件是相对静态的,因此没有什么理由在每次请求时都对它们进行编译,但我有其他经常使用的资产,因此我不希望依赖于rake资产:precompile) 所有主题都包含

我想创建一个rake任务,编译一些引用gems中@import的SASS文件,以加快我的开发工作流程

一些背景

我们最近在rails应用程序中添加了一个新主题,而sass样式表在开发环境中确实使assset管道陷入困境(导致频繁超时)

该主题严重依赖于导入和混合,这将是非常乏味的尝试和手动转换成文件,我们可以只需要
*=一些指南建议的

这些文件是相对静态的,因此没有什么理由在每次请求时都对它们进行编译,但我有其他经常使用的资产,因此我不希望依赖于
rake资产:precompile

所有主题都包含在一个文件(
theme/base.scss
)中,
@import
s包含所有其他主题,因此,我认为一个简单的解决方案是将该文件从
application.css
中取出,并创建一个rake任务
theme:precompile
,将其编译为theme.css,然后由
application.css

这样,如果我们确实需要调整主题文件,我们可以更新它并运行rake任务,然后资产管道就有了一个简单的静态css文件

起初,我尝试设置一个简单调用sass的rake文件

desc 'Precompile the theme SASS to save on development time'
task :precompile do |t, args|
  dir = 'app/assets/stylesheets/'
  source = 'theme/base.scss'
  dest = 'theme.css'

  source_path = dir + src
  dest_path = dir + dst
  puts "Precomipling #{source_path} to #{dest} ..."

  `sass "#{source_path}" "#{dest_path}"`
end
但这失败了,因为该主题依赖于引导式sass gem,因此

Error: File to import not found or unreadable: bootstrap-sprockets.
因此,我的rake任务似乎需要加载整个sprockets环境,或者找出如何告诉SASS引导SASS gem在哪里


这可能吗?还是有更好的解决办法?

我没有找到我所问问题的答案

最后,我的解决办法是将@imports拉到一个单独的文件中,该文件保留在资产管道中,并在我的问题中使用了raketask