diff --git a/Gemfile b/Gemfile index f2dbd228..83cd4333 100644 --- a/Gemfile +++ b/Gemfile @@ -9,11 +9,10 @@ gem "rails", '~> 3.2.9' group :assets do gem 'sass-rails', '~> 3.2.3' gem 'coffee-rails', '~> 3.2.1' - + gem 'less-rails' + gem 'uglifier', '>= 1.0.3' # See https://github.com/sstephenson/execjs#readme for more supported runtimes gem 'therubyracer', platforms: :ruby - - gem 'uglifier', '>= 1.0.3' end gem 'jquery-rails' @@ -25,8 +24,9 @@ gem 'mysql2' gem 'prawn' gem 'haml-rails' gem 'kaminari' -gem 'client_side_validations' gem 'simple_form' +gem 'client_side_validations' +gem 'client_side_validations-simple_form' gem 'inherited_resources' gem 'localize_input', git: "git://github.com/bennibu/localize_input.git" gem 'wikicloth' @@ -42,7 +42,7 @@ gem 'resque' gem 'whenever', require: false # For defining cronjobs, see config/schedule.rb group :production do - gem 'exception_notification', require: 'exception_notifier' + gem 'exception_notification' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index 61e2fc6c..00e6eebe 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -15,12 +15,12 @@ GEM remote: https://rubygems.org/ specs: Ascii85 (1.0.2) - actionmailer (3.2.13) - actionpack (= 3.2.13) - mail (~> 2.5.3) - actionpack (3.2.13) - activemodel (= 3.2.13) - activesupport (= 3.2.13) + actionmailer (3.2.14) + actionpack (= 3.2.14) + mail (~> 2.5.4) + actionpack (3.2.14) + activemodel (= 3.2.14) + activesupport (= 3.2.14) builder (~> 3.0.0) erubis (~> 2.7.0) journey (~> 1.0.4) @@ -28,31 +28,33 @@ GEM rack-cache (~> 1.2) rack-test (~> 0.6.1) sprockets (~> 2.2.1) - activemodel (3.2.13) - activesupport (= 3.2.13) + activemodel (3.2.14) + activesupport (= 3.2.14) builder (~> 3.0.0) - activerecord (3.2.13) - activemodel (= 3.2.13) - activesupport (= 3.2.13) + activerecord (3.2.14) + activemodel (= 3.2.14) + activesupport (= 3.2.14) arel (~> 3.0.2) tzinfo (~> 0.3.29) - activeresource (3.2.13) - activemodel (= 3.2.13) - activesupport (= 3.2.13) - activesupport (3.2.13) - i18n (= 0.6.1) + activeresource (3.2.14) + activemodel (= 3.2.14) + activesupport (= 3.2.14) + activesupport (3.2.14) + i18n (~> 0.6, >= 0.6.4) multi_json (~> 1.0) - acts_as_tree (1.2.0) + acts_as_tree (1.4.0) activerecord (>= 3.0.0) + afm (0.2.0) arel (3.0.2) - better_errors (0.2.0) + better_errors (1.0.1) coderay (>= 1.0.0) - erubis (>= 2.7.0) - binding_of_caller (0.6.8) - bootstrap-datepicker-rails (1.1.1.1) + erubis (>= 2.6.6) + binding_of_caller (0.7.2) + debug_inspector (>= 0.0.1) + bootstrap-datepicker-rails (1.1.1.8) railties (>= 3.0) builder (3.0.4) - bullet (4.3.0) + bullet (4.6.0) uniform_notifier capistrano (2.13.5) highline @@ -70,72 +72,78 @@ GEM xpath (~> 2.0) childprocess (0.3.9) ffi (~> 1.0, >= 1.0.11) - chronic (0.9.0) - client_side_validations (3.1.4) - coderay (1.0.8) + chronic (0.10.2) + client_side_validations (3.2.6) + client_side_validations-simple_form (2.1.0) + client_side_validations (~> 3.2.5) + simple_form (~> 2.1.0) + coderay (1.1.0) coffee-rails (3.2.2) coffee-script (>= 2.2.0) railties (~> 3.2.0) coffee-script (2.2.0) coffee-script-source execjs - coffee-script-source (1.3.3) - commonjs (0.2.6) + coffee-script-source (1.6.3) + commonjs (0.2.7) daemons (1.1.9) - database_cleaner (0.7.1) + database_cleaner (1.2.0) + debug_inspector (0.0.2) diff-lcs (1.2.4) erubis (2.7.0) eventmachine (1.0.3) - exception_notification (2.6.1) + exception_notification (4.0.1) actionmailer (>= 3.0.4) - execjs (1.4.0) - multi_json (~> 1.0) + activesupport (>= 3.0.4) + execjs (2.0.2) expression_parser (0.9.0) factory_girl (4.2.0) activesupport (>= 3.0.0) factory_girl_rails (4.2.1) factory_girl (~> 4.2.0) railties (>= 3.0.0) - faker (1.1.2) + faker (1.2.0) i18n (~> 0.5) ffi (1.9.0) - haml (3.1.7) - haml-rails (0.3.5) + haml (4.0.3) + tilt + haml-rails (0.4) actionpack (>= 3.1, < 4.1) activesupport (>= 3.1, < 4.1) - haml (~> 3.1) + haml (>= 3.1, < 4.1) railties (>= 3.1, < 4.1) - has_scope (0.5.1) - hashery (2.0.1) + has_scope (0.6.0.rc) + actionpack (>= 3.2, < 5) + activesupport (>= 3.2, < 5) + hashery (2.1.1) highline (1.6.19) hike (1.2.3) - i18n (0.6.1) + i18n (0.6.5) i18n-spec (0.4.0) iso - inherited_resources (1.3.1) - has_scope (~> 0.5.0) - responders (~> 0.6) + inherited_resources (1.4.1) + has_scope (~> 0.6.0.rc) + responders (~> 1.0.0.rc) iso (0.2.0) i18n journey (1.0.4) - jquery-rails (2.1.3) - railties (>= 3.1.0, < 5.0) - thor (~> 0.14) - json (1.7.7) + jquery-rails (3.0.4) + railties (>= 3.0, < 5.0) + thor (>= 0.14, < 2.0) + json (1.8.0) kaminari (0.14.1) actionpack (>= 3.0.0) activesupport (>= 3.0.0) - less (2.2.2) - commonjs (~> 0.2.6) - less-rails (2.2.3) + less (2.4.0) + commonjs (~> 0.2.7) + less-rails (2.4.2) actionpack (>= 3.1) - less (~> 2.2.0) - libv8 (3.3.10.4) - mail (2.5.3) - i18n (>= 0.4.0) + less (~> 2.4.0) + libv8 (3.16.14.3) + mail (2.5.4) mime-types (~> 1.16) treetop (~> 1.4.8) - mailcatcher (0.5.11) + mailcatcher (0.5.12) activesupport (~> 3.0) eventmachine (~> 1.0.0) haml (>= 3.1, < 5) @@ -149,24 +157,26 @@ GEM activerecord (~> 3.1) activesupport (~> 3.1) polyamorous (~> 0.5.0) - mime-types (1.21) + mime-types (1.25) mini_portile (0.5.1) mono_logger (1.1.0) - multi_json (1.7.9) - mysql2 (0.3.11) - net-scp (1.1.1) + multi_json (1.8.1) + mysql2 (0.3.13) + net-scp (1.1.2) net-ssh (>= 2.6.5) net-sftp (2.1.2) net-ssh (>= 2.6.5) - net-ssh (2.6.7) + net-ssh (2.7.0) net-ssh-gateway (1.2.0) net-ssh (>= 2.6.5) nokogiri (1.6.0) mini_portile (~> 0.5.0) - pdf-reader (1.2.0) + pdf-reader (1.3.3) Ascii85 (~> 1.0.0) + afm (~> 0.2.0) hashery (~> 2.0) ruby-rc4 + ttfunk polyamorous (0.5.0) activerecord (~> 3.0) polyglot (0.3.3) @@ -184,43 +194,44 @@ GEM rack rack-test (0.6.2) rack (>= 1.0) - rails (3.2.13) - actionmailer (= 3.2.13) - actionpack (= 3.2.13) - activerecord (= 3.2.13) - activeresource (= 3.2.13) - activesupport (= 3.2.13) + rails (3.2.14) + actionmailer (= 3.2.14) + actionpack (= 3.2.14) + activerecord (= 3.2.14) + activeresource (= 3.2.14) + activesupport (= 3.2.14) bundler (~> 1.0) - railties (= 3.2.13) + railties (= 3.2.14) rails-assets-listjs (0.2.0.beta.4) railties (>= 3.1) rails-settings-cached (0.2.4) rails (>= 3.0.0) - railties (3.2.13) - actionpack (= 3.2.13) - activesupport (= 3.2.13) + railties (3.2.14) + actionpack (= 3.2.14) + activesupport (= 3.2.14) rack-ssl (~> 1.3.2) rake (>= 0.8.7) rdoc (~> 3.4) thor (>= 0.14.6, < 2.0) - rake (10.0.3) + rake (10.1.0) rdoc (3.12.2) json (~> 1.4) - redis (3.0.4) + redis (3.0.5) redis-namespace (1.3.1) redis (~> 3.0.0) - responders (0.9.3) - railties (~> 3.1) - resque (1.24.1) + ref (1.0.5) + responders (1.0.0) + railties (>= 3.2, < 5) + resque (1.25.1) mono_logger (~> 1.0) multi_json (~> 1.0) redis-namespace (~> 1.2) sinatra (>= 0.9.2) vegas (~> 0.1.2) - rspec-core (2.14.2) - rspec-expectations (2.14.0) + rspec-core (2.14.5) + rspec-expectations (2.14.3) diff-lcs (>= 1.1.3, < 2.0) - rspec-mocks (2.14.1) + rspec-mocks (2.14.3) rspec-rails (2.14.0) actionpack (>= 3.0) activesupport (>= 3.0) @@ -231,22 +242,22 @@ GEM ruby-prof (0.13.0) ruby-rc4 (0.1.5) rubyzip (0.9.9) - sass (3.2.1) - sass-rails (3.2.5) + sass (3.2.12) + sass-rails (3.2.6) railties (~> 3.2.0) sass (>= 3.1.10) tilt (~> 1.3) - select2-rails (3.4.2) - sass-rails + select2-rails (3.5.0) thor (~> 0.14) selenium-webdriver (2.35.1) childprocess (>= 0.2.5) multi_json (~> 1.0) rubyzip (< 1.0.0) websocket (~> 1.0.4) - simple-navigation (3.9.0) + simple-navigation (3.11.0) activesupport (>= 2.3.2) - simple-navigation-bootstrap (0.0.4) + simple-navigation-bootstrap (1.0.0) + railties (>= 3.1) simple-navigation (>= 3.7.0) simple_form (2.1.0) actionpack (~> 3.0) @@ -255,10 +266,10 @@ GEM multi_json (~> 1.0) simplecov-html (~> 0.7.1) simplecov-html (0.7.1) - sinatra (1.3.6) + sinatra (1.4.3) rack (~> 1.4) - rack-protection (~> 1.3) - tilt (~> 1.3, >= 1.3.3) + rack-protection (~> 1.4) + tilt (~> 1.3, >= 1.3.4) skinny (0.2.3) eventmachine (~> 1.0.0) thin (~> 1.5.0) @@ -267,33 +278,34 @@ GEM multi_json (~> 1.0) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) - sqlite3 (1.3.6) - therubyracer (0.10.2) - libv8 (~> 3.3.10) + sqlite3 (1.3.8) + therubyracer (0.12.0) + libv8 (~> 3.16.14.0) + ref thin (1.5.1) daemons (>= 1.0.9) eventmachine (>= 0.12.6) rack (>= 1.0.0) - thor (0.17.0) + thor (0.18.1) tilt (1.4.1) - treetop (1.4.12) + treetop (1.4.15) polyglot polyglot (>= 0.3.1) ttfunk (1.0.3) - twitter-bootstrap-rails (2.1.3) + twitter-bootstrap-rails (2.2.8) actionpack (>= 3.1) - less-rails (~> 2.2.3) + execjs + rails (>= 3.1) railties (>= 3.1) - therubyracer (~> 0.10.2) - tzinfo (0.3.37) - uglifier (1.3.0) + tzinfo (0.3.38) + uglifier (2.2.1) execjs (>= 0.3.0) multi_json (~> 1.0, >= 1.0.2) - uniform_notifier (1.1.1) + uniform_notifier (1.3.0) vegas (0.1.11) rack (>= 1.0.0) websocket (1.0.7) - whenever (0.8.1) + whenever (0.8.4) activesupport (>= 2.3.4) chronic (>= 0.6.3) wikicloth (0.8.0) @@ -316,6 +328,7 @@ DEPENDENCIES capistrano-ext capybara (~> 2.1.0) client_side_validations + client_side_validations-simple_form coffee-rails (~> 3.2.1) daemons database_cleaner @@ -327,6 +340,7 @@ DEPENDENCIES inherited_resources jquery-rails kaminari + less-rails localize_input! mailcatcher meta_search diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index b8902ac3..382eb0c8 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -1,5 +1,4 @@ //= require jquery -//= require jquery-ui //= require jquery_ujs //= require select2 //= require twitter/bootstrap @@ -14,6 +13,7 @@ //= require list.delay //= require list.reset //= require rails.validations +//= require rails.validations.simple_form //= require_self //= require ordering //= require stupidtable @@ -35,19 +35,19 @@ $.fn.extend({ $(function() { // Show/Hide a specific DOM element - $('a[data-toggle-this]').live('click', function() { + $(document).on('click', 'a[data-toggle-this]', function() { $($(this).data('toggle-this')).toggle(); return false; }); // Remove this item from DOM - $('a[data-remove-this]').live('click', function() { + $(document).on('click', 'a[data-remove-this]', function() { $($(this).data('remove-this')).remove(); return false; }); // Check/Uncheck a single checkbox - $('[data-check-this]').live('click', function() { + $(document).on('click', '[data-check-this]', function() { var checkbox = $($(this).data('check-this')); checkbox.attr('checked', !checkbox.is(':checked')); highlightRow(checkbox); @@ -55,7 +55,7 @@ $(function() { }); // Check/Uncheck all checkboxes for a specific form - $('input[data-check-all]').live('click', function() { + $(document).on('click', 'input[data-check-all]', function() { var status = $(this).is(':checked'); var context = $(this).data('check-all'); var elms = $('input[type="checkbox"]', context); @@ -67,7 +67,7 @@ $(function() { }); // Submit form when changing a select menu. - $('form[data-submit-onchange] select').live('change', function() { + $(document).on('change', 'form[data-submit-onchange] select', function() { var confirmMessage = $(this).children(':selected').data('confirm'); if (confirmMessage) { if (confirm(confirmMessage)) { @@ -100,7 +100,7 @@ $(function() { }); // Remote paginations - $('div.pagination[data-remote] a').live('click', function() { + $(document).on('click', 'div.pagination[data-remote] a', function() { $.getScript($(this).attr('href')); return false; }); @@ -121,6 +121,20 @@ $(function() { // Use bootstrap datepicker for dateinput $('.datepicker').datepicker({format: 'yyyy-mm-dd', language: I18n.locale}); + + // bootstrap tooltips (for price) + // Extra options don't work when using selector, so override defaults + // https://github.com/twbs/bootstrap/issues/3875 . These can still be + // overridden per tooltip using data-placement attributes and the like. + $.extend($.fn.tooltip.defaults, { + html: true, + animation: false, + placement: 'left', + container: 'body' + }); + $(document).tooltip({ + selector: '[data-toggle~="tooltip"]', + }); // See stupidtable.js for initialization of local table sorting }); @@ -147,3 +161,5 @@ function highlightRow(checkbox) { function setHiddenId(text, li) { $('hidden_id').value = li.id; } + + diff --git a/app/assets/javascripts/bootstrap.js.coffee b/app/assets/javascripts/bootstrap.js.coffee index c9404a8e..94406798 100644 --- a/app/assets/javascripts/bootstrap.js.coffee +++ b/app/assets/javascripts/bootstrap.js.coffee @@ -1,4 +1,3 @@ jQuery -> - $("a[rel=popover]").popover() - $(".tooltip").tooltip() - $("a[rel=tooltip]").tooltip() \ No newline at end of file + $("a[rel~=popover], .has-popover").popover() + $("a[rel~=tooltip], .has-tooltip").tooltip() diff --git a/app/assets/stylesheets/bootstrap_and_overrides.css.less b/app/assets/stylesheets/bootstrap_and_overrides.css.less index cce03029..6ad25972 100644 --- a/app/assets/stylesheets/bootstrap_and_overrides.css.less +++ b/app/assets/stylesheets/bootstrap_and_overrides.css.less @@ -1,24 +1,23 @@ @import "twitter/bootstrap/bootstrap"; +@import "twitter/bootstrap/responsive"; body { padding-top: 10px; } -@import "twitter/bootstrap/responsive"; - // Set the correct sprite paths -@iconSpritePath: asset-path('twitter/bootstrap/glyphicons-halflings.png'); -@iconWhiteSpritePath: asset-path('twitter/bootstrap/glyphicons-halflings-white.png'); +@iconSpritePath: image-url('twitter/bootstrap/glyphicons-halflings.png'); +@iconWhiteSpritePath: image-url('twitter/bootstrap/glyphicons-halflings-white.png'); // Set the Font Awesome (Font Awesome is default. You can disable by commenting below lines) -// Note: If you use asset_path() here, your compiled boostrap_and_overrides.css will not -// have the proper paths. So for now we use the absolute path. -@fontAwesomeEotPath: '/assets/fontawesome-webfont.eot'; -@fontAwesomeWoffPath: '/assets/fontawesome-webfont.woff'; -@fontAwesomeTtfPath: '/assets/fontawesome-webfont.ttf'; -@fontAwesomeSvgPath: '/assets/fontawesome-webfont.svg'; +@fontAwesomeEotPath: asset-url('fontawesome-webfont.eot'); +@fontAwesomeEotPath_iefix: asset-url('fontawesome-webfont.eot?#iefix'); +@fontAwesomeWoffPath: asset-url('fontawesome-webfont.woff'); +@fontAwesomeTtfPath: asset-url('fontawesome-webfont.ttf'); +@fontAwesomeSvgPath: asset-url('fontawesome-webfont.svg#fontawesomeregular'); +@import 'fontawesome/font-awesome'; -// Font Awesome -@import "fontawesome"; +// Glyphicons +//@import "twitter/bootstrap/sprites.less"; // Your custom LESS stylesheets goes here // @@ -26,7 +25,7 @@ body { // you may use and inherit here // // If you'd like to override bootstrap's own variables, you can do so here as well -// See http://twitter.github.com/bootstrap/less.html for their names and documentation +// See http://twitter.github.com/bootstrap/customize.html#variables for their names and documentation // // Example: // @linkColor: #ff0000; diff --git a/app/views/deliveries/_form.html.haml b/app/views/deliveries/_form.html.haml index c1702708..3e1a3b6c 100644 --- a/app/views/deliveries/_form.html.haml +++ b/app/views/deliveries/_form.html.haml @@ -61,8 +61,6 @@ return true; } }); - - enablePriceTooltips(); }); function mark_article_for_delivery(stock_article_id) { @@ -80,14 +78,6 @@ return ( 0 == $('#stock_change_stock_article_' + stock_article_id).length ); } - function enablePriceTooltips(context) { - $('[data-toggle~="tooltip"]', context).tooltip({ - animation: false, - html: true, - placement: 'left' - }); - } - = simple_form_for [@supplier, @delivery], validate: true do |f| = f.error_notification = base_errors f.object diff --git a/app/views/deliveries/add_stock_change.js.erb b/app/views/deliveries/add_stock_change.js.erb index 3e233bb6..2d01bc68 100644 --- a/app/views/deliveries/add_stock_change.js.erb +++ b/app/views/deliveries/add_stock_change.js.erb @@ -13,7 +13,6 @@ var stock_change = $( '<%= j(render(:partial => 'stock_change', :locals => {:stock_change => @stock_change})) %>' ).addClass('success'); - enablePriceTooltips(stock_change); $('input.stock-change-quantity', stock_change).val(quantity); $('#stock_changes').append(stock_change); diff --git a/app/views/deliveries/create_stock_article.js.erb b/app/views/deliveries/create_stock_article.js.erb index 5e2893a9..cb9d0159 100644 --- a/app/views/deliveries/create_stock_article.js.erb +++ b/app/views/deliveries/create_stock_article.js.erb @@ -8,7 +8,6 @@ $('div.container-fluid').prepend( var stock_article_for_adding = $( '<%= j(render(:partial => 'stock_article_for_adding', :locals => {:article => @stock_article})) %>' ).addClass('success'); - enablePriceTooltips(stock_article_for_adding); $('#stock_articles_for_adding tbody').append(stock_article_for_adding); updateSort('#stock_articles_for_adding'); diff --git a/app/views/deliveries/update_stock_article.js.erb b/app/views/deliveries/update_stock_article.js.erb index ef46636d..7b2d56d6 100644 --- a/app/views/deliveries/update_stock_article.js.erb +++ b/app/views/deliveries/update_stock_article.js.erb @@ -10,7 +10,6 @@ $('div.container-fluid').prepend( var stock_article_for_adding = $( '<%= j(render(:partial => 'stock_article_for_adding', :locals => {:article => @stock_article, :delivery => @delivery})) %>' ).addClass('success'); - enablePriceTooltips(stock_article_for_adding); $('#stock_article_<%= @stock_article.id %>').replaceWith(stock_article_for_adding); updateSort('#stock_articles_for_adding'); diff --git a/app/views/finance/financial_transactions/new_collection.html.haml b/app/views/finance/financial_transactions/new_collection.html.haml index 324b118b..aaa67129 100644 --- a/app/views/finance/financial_transactions/new_collection.html.haml +++ b/app/views/finance/financial_transactions/new_collection.html.haml @@ -5,12 +5,12 @@ var ordergroup = "#{escape_javascript(render('ordergroup'))}" $(function() { - $('a[data-remove-transaction]').live('click', function() { + $(document).on('click', 'a[data-remove-transaction]', function() { $(this).parents('tr').remove(); return false; }); - $('a[data-add-transaction]').click(function() { + $(document).on('click', 'a[data-add-transaction]', function() { $('#ordergroups').append(ordergroup); return false; }); diff --git a/app/views/stock_takings/new.html.haml b/app/views/stock_takings/new.html.haml index 6e4526f9..51239ba4 100644 --- a/app/views/stock_takings/new.html.haml +++ b/app/views/stock_takings/new.html.haml @@ -1,20 +1,5 @@ - title t('.title') -- content_for :javascript do - :javascript - $(function() { - enablePriceTooltips(); - }); - - function enablePriceTooltips(context) { - $('[data-toggle~="tooltip"]', context).tooltip({ - animation: false, - html: true, - placement: 'left', - container: 'body' - }); - } - - content_for :sidebar do %p %i= t('.text_deviations', inv_link: link_to(t('.temp_inventory'), stock_articles_path)).html_safe diff --git a/config/initializers/client_side_validations.rb b/config/initializers/client_side_validations.rb index caf18378..95ff1644 100644 --- a/config/initializers/client_side_validations.rb +++ b/config/initializers/client_side_validations.rb @@ -1,7 +1,15 @@ # ClientSideValidations Initializer -require 'client_side_validations/simple_form' if defined?(::SimpleForm) -require 'client_side_validations/formtastic' if defined?(::Formtastic) +# Uncomment to disable uniqueness validator, possible security issue +# Disabled because of possible security issue and because of bug +# https://github.com/bcardarella/client_side_validations/pull/532 +ClientSideValidations::Config.disabled_validators = [:uniqueness] + +# Uncomment to validate number format with current I18n locale +# Foodsoft is currently using localize_input which is activated on certain +# fields only, meaning we can't globally turn this on. The non-i18n number +# format is still supported - so for now keep false. +# ClientSideValidations::Config.number_format_with_locale = true # Uncomment the following block if you want each input field to have the validation messages attached. # ActionView::Base.field_error_proc = Proc.new do |html_tag, instance| diff --git a/config/initializers/load_app_config.rb b/config/initializers/load_app_config.rb index 1509536e..9501a48a 100644 --- a/config/initializers/load_app_config.rb +++ b/config/initializers/load_app_config.rb @@ -14,13 +14,15 @@ url_options.merge!({:port => FoodsoftConfig[:port]}) if FoodsoftConfig[:port] Foodsoft::Application.configure do config.action_mailer.default_url_options = url_options - if Rails.env !~ /development|test/ + if %w(production).include? Rails.env # Configuration of the exception_notification plugin # Mailadresses are set in config/app_config.yml - config.middleware.use ExceptionNotifier, - :email_prefix => FoodsoftConfig[:notification]['email_prefix'], - :sender_address => FoodsoftConfig[:notification]['sender_address'], - :exception_recipients => FoodsoftConfig[:notification]['error_recipients'] + config.middleware.use ExceptionNotification::Rack, + :email => { + :email_prefix => FoodsoftConfig[:notification]['email_prefix'], + :sender_address => FoodsoftConfig[:notification]['sender_address'], + :exception_recipients => FoodsoftConfig[:notification]['error_recipients'] + } end end