标签: asset-pipeline

在rails 3.1的资产管道之外包含JS文件?

我想包含一些不在资产管道中的js文件,我尝试将它们包含在rails.root和这些文件的完整路径中,但这不是许可的工作原因。

我知道我可以在资产管道JS application.js中手动包括每个单独的JS文件,但这会做很多工作,因为我的JS在开发过程中发生了很多变化,因此,如果有一种方法可以包括js文件,那就太好了外部资产管道。

有人对我该如何处理有一些建议吗?

include ruby-on-rails-3.1 asset-pipeline

4
推荐指数
1
解决办法
3454
查看次数

Rails 3.1 Asset Pipeline清单文件不会获取javascripts

我在供应商/资产/ 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和供应商)外部提供资产?

ruby-on-rails-3.1 asset-pipeline

4
推荐指数
1
解决办法
1718
查看次数

从控制器访问 stylesheet_link_tag

stylesheet_link_tag控制器是否有呼叫?我正在内存中创建一个 PDF 文件,并将其传递给另一个服务的 api 调用。我正在使用 PDFKit,它要求我向其发送样式表链接。我使用的是 Rails 3.1,因此需要通过此方法访问资产管道。

谢谢您的帮助!

ruby-on-rails ruby-on-rails-3.1 asset-pipeline

4
推荐指数
1
解决办法
1957
查看次数

如何强制Rails预编译SCSS样式表?

我正在尝试运行一个显然尚未准备好迎接黄金时段的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文件吗?

ruby-on-rails-3 asset-pipeline

4
推荐指数
1
解决办法
5004
查看次数

Rails不在生产或登台环境中提供资产

在调试此问题的过程中,我尝试在本地生产模式下运行我的应用程序,它不提供任何资产.另外,我在Heroku应用程序中有一个临时环境(与我的生产Heroku应用程序分开),它现在也显示没有任何资产的HTML.

为了调试,我:

  1. 杀死服务器
  2. 清除tmp/cache/assets
  3. 删除公共/资产
  4. rake assets:precompile
  5. 启动服务器 rails s -e production
  6. 访问该页面并打开Web检查器,然后单击application.css链接的展开箭头 Reload the page to get source for: http://localhost:3000/assets/application-e1f3e0c864a153c7iu66f8772a886376.css
  7. 重新加载页面什么都不做.

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)

ruby-on-rails-3 asset-pipeline

4
推荐指数
2
解决办法
1万
查看次数

Rails资产管道Rails.application.assets.instance_variable_get('@ environment')返回nil

我试图动态编译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')总是返回零,有什么我做错了吗?或者我应该添加其他东西?

assets ruby-on-rails asset-pipeline

4
推荐指数
1
解决办法
914
查看次数

根据环境在Rails中加载不同的Javascript文件

在Rails 3.2中根据您的环境(生产或开发)加载不同的Javascript文件的最佳方法是什么?我正在尝试创建一个全局(是全局)javascript变量,该变量应根据环境而有所不同。该变量由JQuery调用,但是我编写的其他一些javascript文件需要该变量。

最好application.js.erb根据我们正在运行的环境生成动态的,还是我遗漏了什么?

谢谢

javascript ruby-on-rails erb asset-pipeline

4
推荐指数
1
解决办法
905
查看次数

当 X-Forwarded-Proto 为 https 时,重定向位置包括“:80”

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 连接并失败。

grails nginx asset-pipeline grails-3.0

4
推荐指数
1
解决办法
1096
查看次数

如何将 Rails Engine 的 /public 文件夹复制到生产中的 Rails 应用程序?

我知道一个简单的解决方案就是手动将 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)

但这仅适用于发展。

ruby-on-rails bundler asset-pipeline

4
推荐指数
1
解决办法
1932
查看次数

Sprockets 未拾取 app/assets/builds 文件夹 Rails 7

我只是设置了一个空的 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)

ruby-on-rails sprockets asset-pipeline ruby-on-rails-7

4
推荐指数
1
解决办法
2806
查看次数