我的邮件在rails 3.1上有一个内联附件.
要打开该附件,我使用此代码:
attachments["rails.png"] = File.read("#{Rails.root}/app/assets/images/Rails.png")
Run Code Online (Sandbox Code Playgroud)
有没有办法改变这种类似的东西assets_url?
如果我没有正确处理视图,生产环境显示500.
<%= image_tag post.user.image_url %>
这可能是
<%= image_tag post.user.image_url if post.user && post.user.image_url %>
但我有点不小心,多次忘记了这个问题.
我怎么能阻止这个?如何<%= image_tag nil %>在不提高500的情况下在生产环境中使用?
我在app/assets/stylesheets/external/calendars中有一些非常繁重的外部样式表我不想将样式表包含到application.css中,因为它们很少使用
但我希望他们预编译.
我是否使用config.assets.precompile o有选择地预编译此文件夹中的所有样式表?
我发现自己经常做同样的事情,使用设计师创建漂亮的ui然后转换HTML/CSS分割整个资产管道,找到并替换路径和css + js标签; 更新所有内容以使用资产路径.有什么能自动地做到这一点吗?
我正在使用turbolink(rails4)和js链接由我的页面标题部分中的application.js文件生成
<script data-turbolinks-track="true" src="/assets/jquery.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/jquery_ujs.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/turbolinks.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/global.js?body=1"></script>
Run Code Online (Sandbox Code Playgroud)
我的application.js看起来像:
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require bootstrap.min.js
//= require respond.min.js
Run Code Online (Sandbox Code Playgroud)
我想从OTHER网站添加一个外部javascript文件,例如http://otherdomain.com/xyz.js在我网站的特定页面中.假设我想在特定页面http://mysite.com/profile中添加此外部js文件我想在页面的标题部分添加此js文件.那我该怎么办呢?请不要建议在本地保存该外部文件,因为这不是我的选择.
javascript ruby-on-rails sprockets asset-pipeline ruby-on-rails-4
我在Asset Pipeline中使用Rails 3.1和SCSS.无论如何都要访问SCSS文件中的Rails助手或控制器数据?就像是...
#main {
background-color: #{current_user.preferences.background_color}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以自己设置,$variables但我不确定如何从控制器的数据中填充它们.
我知道已有一百万个问题,但我无法理解.
我想在资产管道中包含我的大部分JS文件,但我有一些我想要有条件地加载(或仅在某些页面上).这些是大而复杂的文件,并且永远不会被95%的用户使用,所以我宁愿不为每个用户加载它们.一组JS文件用于日历,放在:
app/assets/javascripts/calendar
Run Code Online (Sandbox Code Playgroud)
所以我的清单设置为只包含顶级目录(并排除日历子目录):
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_directory .
Run Code Online (Sandbox Code Playgroud)
我的config/environments/production.rb:
# Compress JavaScripts and CSS
config.assets.compress = true
# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false
# Generate digests for assets URLs.
config.assets.digest = true
# This following config is left over from previous Rails app,
# so not sure if it's now unnecessary ...
# Disable Rails's static asset server
# In production, Apache or …Run Code Online (Sandbox Code Playgroud) 这里的文档说明了在Rails4中部署期间预编译资产的heroku.
但是,我没有看到预编译资产消息.
Using thin (1.6.1)
Using twitter-bootstrap-rails (2.2.8)
Using uglifier (2.3.1)
Using will_paginate (3.0.4)
Your bundle is complete! It was installed into ./vendor/bundle
Bundle completed (1.37s)
Cleaning up the bundler cache.
-----> Writing config/database.yml to read from DATABASE_URL
Detected manifest file, assuming assets were compiled locally
-----> Discovering process types
Procfile declares types -> (none)
Default types for Ruby -> console, rake, web, worker
Run Code Online (Sandbox Code Playgroud)
我在我的应用程序中遇到了bootstrap的问题,导航栏无法正确加载+其他一些细微差别,我认为它是资产预编译问题.
我使用的是Rails4,Ruby2.0
我在application.rb中启用了资产
config.assets.enabled = true
Run Code Online (Sandbox Code Playgroud)
手动预编译没有帮助
heroku run rake assets:precompile
Run Code Online (Sandbox Code Playgroud) 我正在Rails中构建一个React应用程序并想尝试react-redux.我注意到它没有提供CDN或凉亭包.
安装说明建议使用NPM,但这不是节点项目.我通过Rails资产管道,CDN或bower包处理所有当前资产(通过rails-assets)
最近,在我最近部署到Heroku时,我收到警告,建议不要使用AssetSync.
remote: ###### WARNING:
remote: You are using the `asset_sync` gem.
remote: See https://devcenter.heroku.com/articles/please-do-not-use-asset-sync for more information.
Run Code Online (Sandbox Code Playgroud)
我们试图通过使用AssetSync解决的原始问题是我们的应用程序中的大型资产导致了巨大的段塞大小.在Heroku允许我们的300MB中,我们可能使用接近230MB - 尽管我们的git repo只有80MB左右.
我们通过使用AssetSync将所有已编译资产同步到通过Cloudfront提供的S3存储桶来解决此问题.在AssetSync运行之后,我们有一个钩子可以删除所有预编译资产以减少段塞大小.基本上,slug编译期间的工作流程如下所示:
链接的文章争论了一些关于它为什么不好以及使用什么的点.
使用资产同步可能会导致失败.调试很困难,不必要,并增加了额外的复杂性.不要使用它.相反,使用CDN.
[...]
您现在应该使用CDN.CDN在预编译后不会将资产复制到S3,而是从您的网站上抓取它们.以下是为什么更好的原因.
规范资产
[...]它允许您拥有存储信息的单一权威位置.如果您需要更改该信息,则只需在一个位置进行更改即可.[...]如果某人在资产同步后部署失败,会发生什么?如果有人修改了S3存储桶中的文件怎么办?现在你必须修复两个,而不是修复一个资产副本.
部署决定论
如果您使用heroku运行bash在dyno内部进行调试并运行rake资产:预编译这不仅仅是修改本地副本.它实际上也修改了S3上的副本.[...]如果网络出现故障,asset_sync的同步部分也会失败.如果您只编写文件的一部分,或者只有一半的资产被同步,该怎么办?这些事情发生了.
虽然我同意他们的观点,但问题仍然存在:当预编译资产存储在slug中时,部署Heroku应用程序的推荐方法是什么?
asset-pipeline ×10
heroku ×2
actionmailer ×1
automation ×1
converter ×1
html ×1
javascript ×1
mailer ×1
reactjs ×1
redux ×1
ruby ×1
sass ×1
sprockets ×1