我有一个带有rails 3.1的巨大项目(没有资产管道).这个项目有很多不同的布局,例如:
等每个布局有一个巨大的JS和CSS(附上他们,我们使用的名单javascript_include_tag和stylesheet_link_tag).是否可以启用资产管道,因此它将包含不同布局的不同js/css文件,它将为生产中的每个布局生成不同的application.js和application.css?
我试图将Fontawesome包含在Rails 4应用程序中,但资产并没有进入资产管道.但是,字体并没有在生产中出现,我无法弄清楚原因.
我的所有资产都存储在这里,/assets/components
以便Fontawesome出现在:( /assets/components/font-awesome它们位于不同的目录中,因为我正在使用Bower).
# application.css.scss
/* ...
*= require bootstrap/dist/css/bootstrap
*= require font-awesome/css/font-awesome
*= require_self
*= require_tree .
*/
Run Code Online (Sandbox Code Playgroud)
# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'
config.assets.paths << Rails.root.join('vendor', 'assets', 'components')
# Adding Webfonts to the Asset Pipeline
config.assets.precompile << Proc.new { |path|
if path =~ /\.(eot|svg|ttf|woff|otf)\z/
true
end
}
Run Code Online (Sandbox Code Playgroud)
我添加了预编译指令,以便根据此问题对所有字体进行预编译
#gemfile
group :production do
gem "rails_12factor" …Run Code Online (Sandbox Code Playgroud) 我的grails应用程序使用jquery-ui和twitter bootstrap插件.我使用默认的application.js结构.然后我添加以下行来包含jquery-ui和bootstrap.js:
...
//= require jquery
//= require jquery-ui
//= require bootstrap
...
Run Code Online (Sandbox Code Playgroud)
正确加载bootstrap.js,但不包括jquery-ui.js.
我似乎找不到适合我的答案。
图标显示为一个框: ?
我正在使用:
font-awesome-rails (4.6.2.0)
rails (4.2.3)
Run Code Online (Sandbox Code Playgroud)
我使用以下命令在 application.scss 文件中导入了 font-awesome-rails:
@import "font-awesome";
Run Code Online (Sandbox Code Playgroud)
这是我为视图编写的内容:
<i class="quote-left fa fa-quote-left"></i>
Run Code Online (Sandbox Code Playgroud)
我试过在引导之前和之后包括它。
我还尝试将字体文件夹手动添加到 application.rb 中的管道
config.assets.paths << Rails.root.join("app", "assets", "fonts")
Run Code Online (Sandbox Code Playgroud)
清除 tmp 文件夹似乎也没有做任何事情。
我花了太多时间在这上面,请帮忙:(
RAILS_ENV=production rake assets:precompile --trace
Digest::Digest is deprecated; use Digest
Digest::Digest is deprecated; use Digest
** Invoke assets:precompile (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
** Execute assets:precompile
rake aborted!
ExecJS::RuntimeError: SyntaxError: Unexpected token operator «=», expected punc «,» (line: 159, col: 25, pos: 5132)
Error
at new JS_Parse_Error (/tmp/execjs20161124-23752-1wuk17bjs:3623:11948)
at js_error (/tmp/execjs20161124-23752-1wuk17bjs:3623:12167)
at croak (/tmp/execjs20161124-23752-1wuk17bjs:3623:22038)
at token_error (/tmp/execjs20161124-23752-1wuk17bjs:3623:22175)
at expect_token (/tmp/execjs20161124-23752-1wuk17bjs:3623:22411)
at expect (/tmp/execjs20161124-23752-1wuk17bjs:3623:22562)
at ctor.argnames (/tmp/execjs20161124-23752-1wuk17bjs:3623:27486)
at function_ (/tmp/execjs20161124-23752-1wuk17bjs:3623:27550)
at /tmp/execjs20161124-23752-1wuk17bjs:3623:24469 …Run Code Online (Sandbox Code Playgroud) 目标:将我的rails应用程序与生产中的资产中的静态图像一起使用environemt
脚步:
RAILS_ENV=production rails assets:precompileRAILS_SERVE_STATIC_FILESenvironemt变量设置true为启用公共文件服务器(在production.rb-config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?config.serve_static_assets = true到
/config/application.rb通过此设置,我启动了服务器.
我有一些静态图像,/app/assets/images/其中带有指纹文件名的预编译版本现在/public/assets.例子:
aussen-d2fb0029a12281121a1752c599e715a8e2b3db17f1e8e18248a79a7b1ca63b91.jpghintergrund-ca80e1ae5a697c86898f3a7e107694a76dc12e54320b8ac80c58eecbffe0414a.png到目前为止这么棒.
当我background-image: url(<%= asset_path('hintergrund') %>);在application.css.erb其中使用它成功加载预编译的背景图像/public/assets.
问题:我无法在视图中使用image_tags访问预编译的图像!例:
<%= image_tag("aussen") %>
Run Code Online (Sandbox Code Playgroud)
错误日志:
I, [2018-03-23T00:46:29.133381 #9289] INFO -- : [f36ff000-6261-4c2c-bfcc-4a2f80cae682] Started GET "/" for 46.142.136.81 at 2018-03-23 00:46:29 +0100
I, [2018-03-23T00:46:29.134466 #9289] INFO -- : [f36ff000-6261-4c2c-bfcc-4a2f80cae682] Processing by HomeController#index as HTML
I, [2018-03-23T00:46:29.136604 #9289] INFO …Run Code Online (Sandbox Code Playgroud) 我在 vendor/stylesheets 和 vendor/javascript 目录中添加了一些 javascript 和 css 库。我无法在我的 app/javascript/packs/application.js 中导入它们。我使用 webpacker 作为我的资产管道。
ruby-on-rails asset-pipeline ruby-on-rails-5 webpacker ruby-on-rails-5.2
尝试使用 Rails 7、Tailwind 和 PostCSS。
我在 asset/stylesheets 中有一些样式表,我通过同一文件夹中名为 import.css 的文件导入它们。
//imports.css
@import stylesheet1.css;
@import stylesheet2.css;
Run Code Online (Sandbox Code Playgroud)
然后,我使用以下内容将该文件导入到 application.html.erb 中:
//application.html.erb
<%= stylesheet_link_tag "application", "imports", "data-turbo-track": "reload" %>
Run Code Online (Sandbox Code Playgroud)
在开发过程中,一切都按预期运行良好,与顺风配合得很好。由于 postcss,导入工作正常。然而,在生产环境(nginx、puma)中,它尝试提取这些文件并失败。对于我拥有的每个样式表,我在浏览器控制台中看到:
获取https://mywebsite.com/assets/style/stylesheet1.css net::ERR_ABORTED 404(未找到)
我正在尝试将我的大脑从 Rails 6 中的 webpacker 转移过来,不确定我需要在这里做什么......一些想法:
我是否需要进行设置,以便将样式表复制到 public/assets 文件夹或其他文件夹中?Production.rb 中是否有设置可以做到这一点?(我觉得默认情况下 Rails 应该已经这样做了)
我需要在部署时手动预编译这些资产吗?
如有帮助,将不胜感激。谢谢!
好的,我已经阅读了很多关于新资产管道Rails 3.1的信息,我找不到对我的怀疑的正确答案.
我根据我正在渲染的视图#动作按需加载我的.js文件.我这样做是为了防止不正确的绑定并加载小的.js文件.
candidate_opportunities#指数
$(".sortable_drag_n_drop").sortable({
update: function(event, ui) {
$.post('/candidate_opportunities/sort', $(this).sortable('serialize'));
},
handle: 'span'
});
Run Code Online (Sandbox Code Playgroud)
candidate_companies#指数
$(".sortable_drag_n_drop").sortable({
update: function(event, ui) {
$.post('/candidate_companies/sort', $(this).sortable('serialize'));
},
handle: 'span'
});
$(".sortable_drag_n_drop").disableSelection();
Run Code Online (Sandbox Code Playgroud)
现在最好的解决方案是什么?
//=
require_tree .?编译我的所有.js文件?运行后brew upgrade,或其他更新我的宝石/红宝石版本的东西,我的rake assets:precompile任务不再有效.
我收到此错误:
rake aborted!
stack level too deep
(in /Users/Jordan/Development/reejay/rails/reejay/app/assets/stylesheets/blog_player.css.scss)
/Users/Jordan/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/task.rb:162
Tasks: TOP => assets:precompile:primary
rake aborted!
Command failed with status (1): [/usr/local/Cellar/ruby/1.9.3-p0/bin/ruby /...]
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/file_utils.rb:53:in `block in create_shell_runner'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/file_utils.rb:45:in `call'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/file_utils.rb:45:in `sh'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/file_utils_ext.rb:39:in `sh'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/file_utils.rb:80:in `ruby'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/file_utils_ext.rb:39:in `ruby'
/Users/Jordan/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.1.1/lib/sprockets/assets.rake:9:in `ruby_rake_task'
/Users/Jordan/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.1.1/lib/sprockets/assets.rake:17:in `invoke_or_reboot_rake_task'
/Users/Jordan/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.1.1/lib/sprockets/assets.rake:25:in `block (2 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/task.rb:205:in `call'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/task.rb:200:in `each'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 …Run Code Online (Sandbox Code Playgroud) asset-pipeline ×10
ruby ×2
sprockets ×2
font-awesome ×1
gem ×1
grails ×1
heroku ×1
javascript ×1
jquery-ui ×1
layout ×1
view ×1
webpacker ×1