我想包含一些不在资产管道中的js文件,我尝试将它们包含在rails.root和这些文件的完整路径中,但这不是许可的工作原因。
我知道我可以在资产管道JS application.js中手动包括每个单独的JS文件,但这会做很多工作,因为我的JS在开发过程中发生了很多变化,因此,如果有一种方法可以包括js文件,那就太好了外部资产管道。
有人对我该如何处理有一些建议吗?
我在供应商/资产/ javascripts中有一整套javascripts.在我的app/assets/javascripts/application.js文件中,我有指令:
//= require_tree .
Run Code Online (Sandbox Code Playgroud)
那只是引用当前的app/assets/javascripts目录,而不是lib/assets或vendor/assets吗?
如果我明确包含javascripts,它就可以了.如果我不需要,我真的不想那样做.
是否有一些我遗漏的东西会让资产管道能够自动从app目录(lib和供应商)外部提供资产?
stylesheet_link_tag控制器是否有呼叫?我正在内存中创建一个 PDF 文件,并将其传递给另一个服务的 api 调用。我正在使用 PDFKit,它要求我向其发送样式表链接。我使用的是 Rails 3.1,因此需要通过此方法访问资产管道。
谢谢您的帮助!
我正在尝试运行一个显然尚未准备好迎接黄金时段的CRM宝石.我正在尝试通过添加我发现程序错误的所有内容来回馈项目.
但我陷入资产预编译问题.我在资产管道上大约一英里宽,一英寸深.我跑了:
捆绑exec rake资产:预编译
但是当尝试在浏览器中启动应用程序时,会将以下错误写入日志文件:
ActionView::Template::Error (print.css isn't precompiled):
5: %title Not Ready Yet CRM
6: == <!-- #{controller.controller_name} : #{controller.action_name} -->
7: = stylesheet_link_tag :application
8: = stylesheet_link_tag :print, :media => 'print'
9: %style= yield :styles
10:
11: = javascript_include_tag :application
Run Code Online (Sandbox Code Playgroud)
gem中的实际文件不称为"print.css".它被称为"print.css.scss".
我在哪里告诉Rails在资产预编译中获取这些文件?如果我这样做,它会自动知道如何解释SCSS文件吗?
在调试此问题的过程中,我尝试在本地生产模式下运行我的应用程序,它不提供任何资产.另外,我在Heroku应用程序中有一个临时环境(与我的生产Heroku应用程序分开),它现在也显示没有任何资产的HTML.
为了调试,我:
rake assets:precompilerails s -e productionReload the page to get source for: http://localhost:3000/assets/application-e1f3e0c864a153c7iu66f8772a886376.css
Production.rb:
config.cache_classes = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_assets = true
config.static_cache_control = "public, max-age=3600"
config.assets.compress = false
config.assets.compile = false
config.assets.digest = true
Run Code Online (Sandbox Code Playgroud)
Staging.rb:
config.cache_classes = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_assets = true
config.static_cache_control = "public, max-age=3600"
config.assets.compress = false
config.assets.compile = false
config.assets.digest = …Run Code Online (Sandbox Code Playgroud) 我试图动态编译javascript,然后将其添加到sprockets存储,以便它可用.我研究过的每个地方都建议使用以下代码来注册javascript:
env = Rails.application.assets.is_a?(Sprockets::Index) ? Rails.application.assets.instance_variable_get('@environment') : Rails.application
Rails.application.config.assets.digests[file_name] = env[file_name].digest_path
Run Code Online (Sandbox Code Playgroud)
在生产中,Rails.application.assets.instance_variable_get('@environment')总是返回零,有什么我做错了吗?或者我应该添加其他东西?
在Rails 3.2中根据您的环境(生产或开发)加载不同的Javascript文件的最佳方法是什么?我正在尝试创建一个全局(是全局)javascript变量,该变量应根据环境而有所不同。该变量由JQuery调用,但是我编写的其他一些javascript文件需要该变量。
最好application.js.erb根据我们正在运行的环境生成动态的,还是我遗漏了什么?
谢谢
grails.serverURLNginx 终止我们应用程序的 SSL,Nginx 和应用程序服务器之间的通信发生在端口 8080 上,我们的应用程序在配置中没有设置。
我们有一个定期重定向:
redirect uri: '/login'
Run Code Online (Sandbox Code Playgroud)
但是当通过 HTTPS 访问时,重定向返回:
Location: https://domain.com:80/login
Run Code Online (Sandbox Code Playgroud)
因此,浏览器尝试通过端口 80 打开 SSL 连接并失败。
我知道一个简单的解决方案就是手动将 Rails 引擎的 /public 文件夹中的所有文件复制到 Rails 应用程序的 /public 文件夹中。但是,这意味着每次安装都需要手动复制。
此外,因为我的引擎使用的 Javascript 文件具有硬编码的图像路径,所以我不能简单地将所有静态文件放在 app/assets 或供应商/assets 下,因为随后 Rails 会将它们复制到 public/assets 下。我无法更改 Sprockets 输出文件的路径,因为我有其他 gem 期望其资产位于默认的 public/assets 文件夹中。
我尝试做类似的事情
class Engine < ::Rails::Engine
if Rails.application.config.serve_static_assets
initializer "static assets" do |app|
app.middleware.insert_before(::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public")
end
end
end
Run Code Online (Sandbox Code Playgroud)
但这仅适用于发展。
我只是设置了一个空的 Rails 7.0.1 项目并向其中添加 Docker 文件,当命令rake assets:precompile运行时,它不包含文件夹内的文件app/assets/builds。
有谁知道我做错了什么?
应用程序/资产/配置/manifest.js
//= link_tree ../images
//= link_tree ../builds
Run Code Online (Sandbox Code Playgroud)
应用程序/资产/配置/manifest.js
FROM ruby:3.0.3-slim-bullseye AS assets
WORKDIR /app
RUN bash -c "set -o pipefail && apt-get update \
&& apt-get install -y --no-install-recommends build-essential curl git libpq-dev libsqlite3-dev \
&& curl -sSL https://deb.nodesource.com/setup_16.x | bash - \
&& curl -sSL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo 'deb https://dl.yarnpkg.com/debian/ stable main' | tee /etc/apt/sources.list.d/yarn.list \
&& apt-get update && apt-get install …Run Code Online (Sandbox Code Playgroud) asset-pipeline ×10
assets ×1
bundler ×1
erb ×1
grails ×1
grails-3.0 ×1
include ×1
javascript ×1
nginx ×1
sprockets ×1