Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 从数据库获取SASS(编译传递的数据而不是从文件读取)_Ruby_Sql Server_Sass - Fatal编程技术网

Ruby 从数据库获取SASS(编译传递的数据而不是从文件读取)

Ruby 从数据库获取SASS(编译传递的数据而不是从文件读取),ruby,sql-server,sass,Ruby,Sql Server,Sass,有没有办法让SASS编译从数据库传递的数据?我可以使用DBI+ODBC从MSSQL Server 2008获取数据,但如何使SASS编译传递的数据而不是文件 没有发现任何有用的东西,而且更改sass核心文件听起来不是个好主意。。。尤其是考虑到零Ruby知识。我最终使用了这段代码。完全不优雅,但我希望它能帮助有变态需求的人 sass gem dir中的sql.rb: require 'dbi' require 'sass' require config with database credenti

有没有办法让SASS编译从数据库传递的数据?我可以使用DBI+ODBC从MSSQL Server 2008获取数据,但如何使SASS编译传递的数据而不是文件


没有发现任何有用的东西,而且更改sass核心文件听起来不是个好主意。。。尤其是考虑到零Ruby知识。

我最终使用了这段代码。完全不优雅,但我希望它能帮助有变态需求的人

sass gem dir中的sql.rb:

require 'dbi'
require 'sass'
require config with database credentials

if File.exist?(config)
    require config

    SQL_OPTIONS = {
        :style => :nested,
        :load_paths => ['.'],
        :cache => true,
        :cache_location => './.sass-cache',
        :syntax => :scss,
        :filesystem_importer => Sass::Importers::Filesystem,
        :css_location => "./public/stylesheets",
        :always_update => true,
        :template_location => [["scss", "css"]]
    }.freeze

    db = DBI.connect('dbi:ODBC:driver={SQL Server};server=' + $db_host, $db_user, $db_pass)

    db.select_all('SELECT name, scope, content FROM ' + $db_name + '.dbo.scss') do | row |
        File.open(Dir.pwd + '/css/' + row['name'] + '.css', 'w') do |css|  
            css.puts Sass::Engine.new(row['content'], SQL_OPTIONS).render
            puts '  overwrite css/' + row['name'] + '.css [db]'
        end
    end
else
    puts 'ignore database stylesheets, config_ruby doesn\'t exist'
end
在lib/sass/engine.rb中,我在末尾包含了这个文件:

require File.expand_path(File.dirname(__FILE__) + '../../../sql')
它需要额外的
dbi
dbd-odbc
gems,并影响sass——更新和观察

希望这对别人有帮助