美文网首页
Mac下我与Sunspot的一场战斗

Mac下我与Sunspot的一场战斗

作者: bruce_wu | 来源:发表于2015-07-01 19:14 被阅读57次

缘起

最近换了电脑,系统换到了OSX下,开发环境自然也就迁移到了🍎的系统下
OSX是类unix系统,搭建环境没有太大问题。

冲突

But 这几天在rails下使用sunspot却出了问题,无法加载配置<code>sunspot.yml</code>文件

亮剑

各种检查,我的文件和项目配置信息与linux均保持一致,网上一顿搜索也没有找到相关的信息。那么只有看源代码了这一招了。
找到sunspot_rails 下的相关源码在 rails/configuration.rb 这里.

path = File.join(::Rails.root, 'config', 'sunspot.yml')
if File.exist?(path)
   File.open(path) do |file|
     processed = ERB.new(file.read).result
     YAML.load(processed)[::Rails.env]
   end
else
  {}
end

其中 <code> YAML.load(processed)[::Rails.env] </code>检查到这里发现,<code>YAML.load</code> 完后丢失了后面的节点,所以导致配置文件失效
具体在console里面监视如下:

file=File.open(path);processed=ERB.new(file.read).result
=>"production:\n  solr:\n    hostname: solr1.domain.com\n    port: 8983\n    log_level: WARNING\n    path: /solr\n    auto_commit_after_request: false\ndevelopment:\n  solr:\n    hostname: solr1.domain.com\n    port: 8983\n    log_level: INFO\n    path: /solr\n    auto_commit_after_request: false\ntest:\n  solr:\n    hostname: solr1.domain.com\n    port: 8981\n    log_level: WARNING\n    path: /solr/test\n    auto_commit_after_request: false" 
YAML.load(processed)[::Rails.env]
=> {"production"=>{"solr"=>{"hostname"=>"solr1.domain.com", "port"=>8983, "log_level"=>"WARNING", "path"=>"/solr", "auto_commit_after_request"=>false}}} 

#可以看到只加载了 production 节点

结局

经过各种测试和研究,最终确定需要在yml文件头部加一个空行或者注释就可以正常加载了。

相关文章

  • Mac下我与Sunspot的一场战斗

    缘起 最近换了电脑,系统换到了OSX下,开发环境自然也就迁移到了?的系统下OSX是类unix系统,搭建环境没有太大...

  • Solr查询

    在Rails使用Sunspot习惯了,可能对Solr的原生查询完全不了解,其实Sunspot对Solr的查询进行了...

  • 【剽悍读书营成长记录】我这么优秀,为什么我不知道?

    在共读营的十天,每一天都是一场战斗,一场与时间赛跑,与原来的自己对抗的战斗。庆幸的是,这场战斗,我赢了! 01 转...

  • 生活在别处

    我住在北京。在这里,冬天出门会变成一场与雾霾的战斗,排队乘地铁会变成一场力量与体型的战斗。就连周末,也是一场场与辅...

  • 为和平而战

    2017-04-04 ---------《金刚之骷髅岛》观后感 一场人性与兽性的战斗,一场高大与渺小的战斗,一场邪...

  • 2020-02-18

    《白色的战场》 一场战斗,未见敌人;一场战斗,未见流血;一场战斗,未见刀枪;一场战斗,未见硝烟;一场战斗...

  • 我与蚊子的一场战斗

    那天下午在南京一禅修中心,用过药石后看到一道友看着抱起的胳膊站在洗碗池那里一动不动,不知道是在干什么。过了好一会儿...

  • Mac OS X下开发软件的安装与配置

    Mac OS X下开发软件的安装与配置 标签(空格分隔): mac软件 Mac OS X下Maven的安装与配置 ...

  • 第一次鸦片战争中国战败的根本原因是?

    我选成了“清军武器低劣”…… 这里就不得不讲一下“鸦片战争”它不是简单地打一场战斗,而是一场战役。如果一开始的战斗...

  • 维度游戏

    程序、数据、维度、抗争。 《荣耀or虚幻》 今日的王者峡谷迎来了一场久违的战斗,魔道与机关术结合下的水晶塔依旧矗立...

网友评论

      本文标题:Mac下我与Sunspot的一场战斗

      本文链接:https://www.haomeiwen.com/subject/ytxyqttx.html