我正在考虑从我的Ruby on Rails应用程序从自定义Jenkins迁移到Travis。
我的应用程序使用Sunspot运行Solr服务器,并在真正的Solr实例上使用rspec测试查询。 我正在使用sunspot_solr gem witch有一个预打包的Solr发行版,还有sunspot-rails-tester gem只在需要时启动Sunspot。
它适用于我们的本地计算机和Jenkins服务器。
但我现在在Travis遇到麻烦......
根据我在特拉维斯看到的日志,太阳黑子似乎推出:
Sunspot server is starting...
Sunspot server is starting...
Sunspot server is starting...
Sunspot server took 4.10 seconds to start
但是当rspec测试尝试进行查询时,我从Solr得到404错误:
RSolr::Error::Http:
RSolr::Error::Http - 404 Not Found
Error: Not Found
Request Data: "<?xml version=\"1.0\" encoding=\"UTF-8\"?><delete><query>*:*</query></delete>"
我有一个标准的config / sunspot.yml配置:
development:
solr:
hostname: localhost
port: 8982
log_level: INFO
path: /solr/development
test:
solr:
hostname: localhost
port: 8981
log_level: WARNING
path: /solr/test
这是我的.travis.yml配置:
language: ruby
rvm:
- "2.1.3"
cache: bundler
env:
- DB=postgresql
script:
- RAILS_ENV=test bundle exec rake db:migrate --trace
- bundle exec rake db:test:prepare
- bundle exec rake
before_script:
- "psql -c 'create database test;' -U postgres"
- cp config/database.travis.yml config/database.yml
- cp config/sunspot.travis.yml config/sunspot.yml
我在这里找到了一份工作单:Rails app: Solr throwing RSolr::Error::Http - 404 Not Found when executing search
我的sunspot.yml现在是:
development:
solr:
hostname: localhost
port: 8982
log_level: INFO
path: /solr/development
test:
solr:
hostname: localhost
port: 8981
log_level: WARNING
path: /solr/test
solr_home: solr
我不知道这里究竟出了什么问题,为什么我只能为特拉维斯做这件事......
然而,当我设置“solr_home:solr”时,solr安装在这里:
/home/travis/build/myapp/web/vendor/bundle/ruby/2.1.0/gems/sunspot_solr-2.1.1/solr/solr
所以我必须将我的solr / conf / schema.xml复制到这个文件夹中,这是不太可能的,我最终得到了这个travis.yml
language: ruby
rvm:
- "2.1.3"
cache: bundler
env:
- DB=postgresql
script:
- RAILS_ENV=test bundle exec rake db:migrate --trace
- bundle exec rake db:test:prepare
- bundle exec rake
before_script:
- "psql -c 'create database \"elcurator-test\";' -U postgres"
- cp config/database.travis.yml config/database.yml
- cp config/sunspot.travis.yml config/sunspot.yml
- mkdir -p /home/travis/build/myapp/web/vendor/bundle/ruby/2.1.0/gems/sunspot_solr-2.1.1/solr/solr/conf
- cp solr/conf/schema.xml /home/travis/build/myapp/web/vendor/bundle/ruby/2.1.0/gems/sunspot_solr-2.1.1/solr/solr/conf
所以主要的问题仍然是,当我使用默认的solr_home(即“#{Rails.root} / solr”时,为什么会出现404错误?
答案 0 :(得分:0)
SO上的另一篇文章暗示您在sunspot.yml
中指定的端口可能不是最终使用的端口。
尝试使用端口8983,或在/solr/conf/scripts.conf
答案 1 :(得分:0)
检查文件夹/solr/test
的版本是否正确
它应该具有文件solr/test/core.properties
和文件夹solr/test/data
缺少Sunspot 404通常是这些文件丢失。
对于test
环境和其他环境都是如此。