首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么特拉维斯在部署到Heroku时无法连接使用Redis cache_store?

为什么特拉维斯在部署到Heroku时无法连接使用Redis cache_store?
EN

Stack Overflow用户
提问于 2015-01-21 12:47:34
回答 2查看 1.1K关注 0票数 0

我在Rails应用程序中使用Redis缓存:

代码语言:javascript
复制
config.cache_store = :redis_store, redis_url

当我将我的Rails应用程序直接推到Heroku时,它就被成功地部署了。当使用Travis时,Heroku部署步骤失败,因为资产预编译试图连接到Redis。

代码语言:javascript
复制
   Running: rake assets:precompile
   rake aborted!
   ArgumentError: invalid uri scheme ''
   /tmp/build_7c5f167bf750cb2986dbb9c3510ea11e/vendor/bundle/ruby/2.1.0/gems/redis-3.2.0/lib/redis/client.rb:390:in `_parse_options'

我尝试过各种方法:使用rake任务重写RedisStore方法,将cache_store实例化移到初始化阶段,使用Docker而不是sudo,更改Heroku构建策略和其他travis.yml配置等等。

我不想在本地预编译,我不想改变缓存解决方案。在雪松-14堆栈上运行的许多其他应用程序都使用非常类似的设置,因此这个问题似乎有点奇怪。

有任何建议如何解决这个Travis+Heroku部署问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-30 11:40:23

我们通过重写Redis::Store初始化来解决这个问题。当使用Travis触发Heroku部署时,Redis Store尝试连接到Redis。这可能是由于Redis的当前版本(2013年11月)与当前的资产管道实现不兼容。直接推到Heroku的原因还不清楚。当使用travis.yml文件中指定的Heroku构建策略时,它可能与编译资产的顺序有关。也许这些问题将在未来的Redis版本中得到解决。

这是用于在使用Redis作为缓存存储时避免加载Redis的rake任务(lib/资产/任务/assets.rake):

代码语言:javascript
复制
pt = Rake::Task['assets:environment']
Rake.application.send(:eval, "@tasks.delete('assets:environment')")

namespace :assets do
  task :environment do
    class Redis
      class Store
        def initialize(options = { })
          puts ”Do nothing"
        end
      end

      def initialize(options = { })
        puts ”Do nothing"
      end
    end
    pt.execute
  end
end

这不是一个非常优雅的解决方案,但它目前起了作用。请考虑更改缓存解决方案。

票数 0
EN

Stack Overflow用户

发布于 2015-01-22 18:37:36

在我的例子中,我通过将redis init更改为:

代码语言:javascript
复制
REDIS = Redis.new(:url => redis_url_string)

以前,我解析URI并将参数传递为:

代码语言:javascript
复制
uri = URI.parse(redis_url)
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password, :scheme => uri.scheme)

我想知道缓存存储init对于redis是否有类似的init实现(我还没有检查那里的源代码)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28067644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档