将我的 gem“polaris_view_components”从版本
"~> 1.2.0
升级到 "2.0.0"
宝石文件
gem 'polaris_view_components', '~> 2.0', '>= 2.0.1'
gem "view_component"
捆绑宝石成功...
gem list polaris_view_components
*** LOCAL GEMS ***
polaris_view_components (2.2.4)
但是我无法启动应用程序,错误显示
Unable to load application: NameError: uninitialized constant Polaris::ViewHelper
我的源代码中没有痕迹
Polaris::ViewHelper
(我不手动包含它)。
它来自 gem 生成的文件(在底部它包含
helper Polaris::ViewHelper
)
/Users/developer/.asdf/installs/ruby/3.1.0/lib/ruby/gems/3.1.0/gems/polaris_view_components-2.0.0/lib/polaris/view_components/engine.rb:36
这是文件
engine.rb
需要“导轨/发动机”
需要“视图组件”
需要“视图组件/版本”
module Polaris
module ViewComponents
class Engine < ::Rails::Engine
isolate_namespace Polaris::ViewComponents
config.autoload_paths = %W[
#{root}/app/components
#{root}/app/helpers
]
# Remove default wrapping .field_with_errors for proper Shopify form validations
config.to_prepare do
ActionView::Base.field_error_proc = ->(html_tag, _instance) { html_tag.html_safe }
end
initializer "polaris_view_components.assets" do |app|
if app.config.respond_to?(:assets)
app.config.assets.precompile += %w[
polaris_view_components.js polaris_view_components.css
]
end
end
initializer "polaris_view_components.importmap", before: "importmap" do |app|
if app.config.respond_to?(:importmap) && app.config.importmap.has_key?(:cache_sweepers)
app.config.importmap.cache_sweepers << Engine.root.join("app/assets/javascripts")
end
end
initializer "polaris_view_components.helpers" do
ActiveSupport.on_load(:action_controller_base) do
helper Polaris::ViewHelper
helper Polaris::UrlHelper
end
end
end
end
end
看起来这个 gem 的最新版本适用于 Rails 7.1 或更高版本 https://github.com/baoagency/polaris_view_components/pull/338/files
还需要高于 ruby 3.1 - 至少在我本地的测试中是这样。