gpt4 book ai didi

ruby-on-rails - 使用 Gem 加载 Assets (有问题不会加载 Assets )

转载 作者:数据小太阳 更新时间:2023-10-29 09:01:02 27 4
gpt4 key购买 nike

我有一个经常在我的网站上使用的主题。我一直在尝试通过 gem 加载 css、js 和插件文件夹(包含在主题中) Assets 。

Sprockets::FileNotFound: couldn't find file 'phcthemes' with type 'application/javascript'

如果我取出 javascript(仅 css),它不会执行并在编译的 Assets 中完全像这样显示

*= phcthemes

我的想法应用程序无法识别 gem,我尝试使用 isolate_namespace(现在已注释掉)也尝试了几种不同的配置,使用下面答案中的信息无济于事。

主应用application.css

*= phcthemes

主应用application.js

// require phcthemes

lib/phcthemers.rb

require "phcthemes/version"

module Phcthemes
class MyRailtie < Rails::Railtie
end

class Engine < ::Rails::Engine

# Isolate Namespace
#isolate_namespace Phcthemes

# Initialize Assets
initializer :assets do |config|
Rails.application.config.assets.precompile += %w{ application.js application.css }
Rails.application.config.assets.paths << root.join("app", "assets", "javascripts")
Rails.application.config.assets.paths << root.join("app", "assets", "stylesheets")
end

end

end

phcthemes.gemspec

$:.push File.expand_path("../lib", __FILE__)

# Maintain your gem's version:
require "phcthemes/version"

Gem::Specification.new do |spec|

spec.name = "phcthemes"
spec.version = Phcthemes::VERSION
spec.authors = ["BradPotts"]
spec.email = ["bradley.j.potts@gmail.com"]
spec.homepage = "http://phcnetworks.net"
spec.summary = "PHCThemes"
spec.description = "PHCNetworks theme with mtdevise and assets built in."
spec.license = "GPL-3.0"

spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
spec.bindir = "exe"
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"]

spec.files = Dir["{app,config,db,lib}/**/*", "LICENSE", "Rakefile", "README.md"]

# Main Structure & Security
spec.add_dependency "rails", "~> 4.2.5.2"

# Development & Testing
spec.add_development_dependency "sqlite3"
spec.add_development_dependency "bundler", "~> 1.11"
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "rspec", "~> 3.0"

end

最佳答案

您的引擎类中缺少一些代码。包括以下内容

initializer :assets do |config|
Rails.application.config.assets.precompile += %w{ myfile.js myfile.css }
Rails.application.config.assets.paths << root.join("app", "assets", "javascripts")
Rails.application.config.assets.paths << root.join("app", "assets", "stylesheets")
end

然后将您的文件包含在您的 gem 目录中的 app/assets/javascripts 或 app/assets/stylesheets 中。如果它对供应商目录或任何其他目录的作用不同,我会感到惊讶。

将 gem 安装到 Rails 应用程序后,您仍然需要在 application.css 和 application.js 中放置 require 语句。顺便说一下,您的 CSS 要求声明不正确 - 应该是 *= require phcthemes

Railtie文档说运行初始化程序时需要一个 Railtie 类,因此在您的主 gem 模块中包含以下类:

class MyRailtie < Rails::Railtie
end

应该可以了。您实际上根本不必更改 gemspec。

你可以看到我的socket_helpers gem 为例。当我遇到同样的问题时,这就是我正在构建的。

关于ruby-on-rails - 使用 Gem 加载 Assets (有问题不会加载 Assets ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35738671/

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