Rails activestorage 不适用于 shopify_app gem

Posted

技术标签:

【中文标题】Rails activestorage 不适用于 shopify_app gem【英文标题】:Rails activestorage not working with shopify_app gem 【发布时间】:2020-10-29 15:44:59 【问题描述】:

我正在创建一个 Shopify 应用,我想将图像与商店模型一起附加。

但是当我添加与商店模型的活动存储关联时,我无法开始服务。

错误

/home/web/.rvm/gems/ruby-2.6.1/gems/activerecord-6.0.1/lib/active_record/dynamic_matchers.rb:22:in method_missing': undefined method has_one_attached' for Shop(调用'Shop. connection' 建立连接):Class (NoMethodError)

配置:

rails:- 6.0.1,ruby:- 2.6.1,shopify_app:- 11.3.2

这就是我的代码现在的样子

shop.rb

class Shop < ActiveRecord::Base
  include ShopifyApp::SessionStorage

  has_one_attached :icon, dependent: :destroy
end

config/initializers/shopify_app.rb

ShopifyApp.configure do |config|

  config.application_name = "App Name"
  config.api_key = ENV['shopify_api_key']
  config.secret = ENV['shopify_api_secret']
  config.old_secret = "<old_secret>"
  config.scope = "write_script_tags,read_script_tags,read_themes"

  config.embedded_app = false
  config.after_authenticate_job = false
  config.api_version = ShopifyVersion.shopify_api_version
  config.session_repository = Shop
  config.webhooks = [
    topic: 'app/uninstalled', address: 'https://example.com/webhooks/app_uninstalled', format: 'json',
    topic: 'shop/update', address: 'https://example.com/webhooks/shop_update', format: 'json',
end

我试过这个: config/initializers/shopify_app.rb

config.session_repository = 'ShopifyApp::InMemorySessionStore'

但是,它仍然无法用于生产。

错误

ShopifyApp::InMemorySessionStore::EnvironmentError(无法在生产环境中使用 InMemorySessionStore。请使用可以存储和检索会话的模型初始化 ShopifyApp):

另外,尝试升级 gem 版本但没有希望,然后使用当前配置创建一个演示,它会工作。我不明白为什么它不适用于我当前的项目。

谁能给我解释一下?

非常感谢您的建议。 抱歉英语不好。

提前致谢。

【问题讨论】:

【参考方案1】:

在做谷歌并尝试在 Shopify 社区上搜索。我得到了一些建议,根据建议,我尝试仅更新 shopify_app gem 版本和基于新版本的配置。

它对我有用。

更改 13.2.0 而不是 11.3.2

【讨论】:

以上是关于Rails activestorage 不适用于 shopify_app gem的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rails 中正确使用 ActiveStorage 进行模型测试?

如何在 ActiveStorage (Rails 5.2) 中更新附件

使用 ActiveStorage 将 Cloudinary 图像附加到 Rails 模型

从 Rails 6 中删除 ActiveStorage 路由

Rails ActiveStorage:DirectUpload 回调

上传前的 Rails 5.2 ActiveStorage 裁剪附件