尝试部署rails + angular项目。
已解决:结果(来自浏览器日志):
1)其中一个js文件出现小错误。
2)主要模块由于依赖性混乱而未加载,但是错误消息是针对其中一个引导程序文件(?!)。重新安装了twitter-bootstrap gem。
但是,我仍然不理解为什么项目在开发中工作而且在生产中没有问题。
正常运行rails s -e production
,导致回答布局,
assets / javascripts文件夹被加载(绑定事件到窗口onload - 工作)。但所有的凉亭插件,包括角形,jquery等都无法正常工作。
heroku上的本地问题相同。资产编译为tmp / ...文件夹。部署成功结束,但角度部分不起作用(日志中没有错误),以及jquery和所有插件。
在配置/应用程序中:
config.serve_static_files = true
config.less.paths << Rails.root.join('app', 'assets', 'bower_components')
config.assets.paths << Rails.root.join('app', 'assets', 'bower_components')
config.assets.initialize_on_precompile = true
config.assets.precompile = ['*.js', '*.css', '*.css.erb', '*.eot', '*.svg', '*.ttf', '*.woff', '*.woff2']
在config / environments / production中:
config.assets.js_compressor = :uglifier
config.assets.js_compressor = Uglifier.new(:mangle => false)
config.assets.digest = true
config.assets.compile = true
尝试bundle exec rake:assets:precompile RAILS_ENV=production
:没有帮助。
我认为加载插件(bower文件夹,bootstrap,jquery等)作为主文件application.js查询并成功呈现(日志)有问题,但不能作为插件工作似乎没有找到。
的application.js:
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require angular
//= require angular-rails-templates
//= require angular-devise
//= require angular-ui-router
//= require angular-route
//= require angular-bootstrap
//= require angular-touch
//= require ng-tags-input
//= require angular-loading-bar
//= require angular-xeditable
//= require ng-file-upload-shim
//= require ng-file-upload
//= require Buttons
//= require x-editable
//= require angular-ui-notification
//= require_tree ../templates
//= require_tree .
angular.module('boo', ['boo-factories', 'boo-controllers', 'ui-notification', 'ngTagsInput', 'angular-loading-bar', 'ui.router', 'ui.bootstrap', 'templates', 'Devise', 'ngFileUpload', 'xeditable', 'bootstrapLightbox']);
依旧......
答案 0 :(得分:0)
我认为正在发生的事情是,由于您正在编译资产以及创建角度应用程序的方式,因此某些角度代码会分散开来,而不会被资产管道或浏览器理解。
快速但又脏的解决方案(因为加载页面需要更长时间)是:
编辑config / environments / production.rb,评论此行:
config.assets.js_compressor =:uglifier
使用以下命令清理生产环境中的资产管道:
RAILS_ENV =生产佣金资产:干净
最后,再次启动服务器:
rails s -e production
答案 1 :(得分:0)
你是否有任何理由决定在application.js中加载你的模块?我会将其外部化为另一个名为app.js的文件,并确保在工厂,控制器,服务等之前将其加载到树中。
我会遵循给出的建议,确保您的资产在生产中不会缩小。这确实有些奇怪。