gpt4 book ai didi

Ruby 语法错误意外的 tLABEL

转载 作者:数据小太阳 更新时间:2023-10-29 08:11:04 26 4
gpt4 key购买 nike

我对 using redis as a rails cache 进行了以下配置,紧密改编自 Rails 文档:

Rails.application.configure do
...
config.cache_store = :redis_cache_store, url: "redis://example.com:6379/0"
...
end

使用 rails 5.2.0.beta2 和 ruby​​ 2.3.1p112,我的 IDE 告诉我关于 config.cache_store = 行的以下内容:

  • 忽略未使用的文字
  • 语法错误,意外的 tLABEL

如果我将散列包含在 {} 中,错误就会消失,即:

config.cache_store = :redis_cache_store, { url: "redis://example.com:6379/0" }

是文档有误,还是 ruby​​ 版本问题(例如,文档可能假设 ruby​​ >= 2.4)?

无论如何,我不明白赋值实际上是做什么的 - 如何将两件事分配给一个?

最佳答案

当配置 block 命中 cache_store 并给出一个符号时,它假定它是一个缓存存储类并执行如下操作:

:redis_cache_store.to_s.classify.constantize
# => RedisCacheStore

这大概是一个类。您可以通过查看 the docs 推断出 Rails 会执行此操作并看到您也可以通过类(class)。

RedisCacheStore 定义在 ActiveSupport::Cache 命名空间内,它继承自 ActiveSupport::Cache::Store,定义在 cache.rb。此存储类仅使用 options = nil 的单个参数进行初始化:

def initialize(options = nil)
@options = options ? options.dup : {}
end

这表明需要传递哈希。由于某种原因,它没有使用 options = {} 进行初始化,这将使您的初始代码正确。因此,像第二个示例中那样传递哈希值解决了错误。

关于Ruby 语法错误意外的 tLABEL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48177606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com