<commit_before>require_relative 'boot'

require "rails"
[
  "active_record/railtie",
  #"active_storage/engine",
  "action_controller/railtie",
  "action_view/railtie",
  "action_mailer/railtie",
  "active_job/railtie",
  #"action_cable/engine", # Enable this when installing StimulusReflex
  #"action_mailbox/engine",
  #"action_text/engine",
  "rails/test_unit/railtie",
  "sprockets/railtie" # Disable this after migrating to Webpacker
].each do |railtie|
  begin
    require railtie
  rescue LoadError
  end
end

require_relative "../lib/open_food_network/i18n_config"

require_relative '../lib/spree/core/environment'
require_relative '../lib/spree/core/mail_interceptor'

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end

module Openfoodnetwork
  class Application < Rails::Application

    config.to_prepare do
      # Load application's model / class decorators
      Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
        Rails.configuration.cache_classes ? require(c) : load(c)
      end
    end

    config.after_initialize do
      # We need this here because the test env file loads before the Spree engine is loaded
      Spree::Core::Engine.routes.default_url_options[:host] = 'test.host' if Rails.env == 'test'
    end

    # We reload the routes here
    #   so that the appended/prepended routes are available to the application.
    config.after_initialize do
      Rails.application.routes_reloader.reload!
    end

    initializer "spree.environment", before: :load_config_initializers do |app|
      app.config.spree = Spree::Core::Environment.new
      Spree::Config = app.config.spree.preferences # legacy access
    end

    initializer "spree.register.payment_methods" do |app|
      app.config.spree.payment_methods = [
        Spree::Gateway::Bogus,
        Spree::Gateway::BogusSimple,
        Spree::PaymentMethod::Check
      ]
    end

    initializer "spree.mail.settings" do |_app|
      Spree::Core::MailSettings.init
      Mail.register_interceptor(Spree::Core::MailInterceptor)
    end

    # filter sensitive information during logging
    initializer "spree.params.filter" do |app|
      app.config.filter_parameters += [
        :password,
        :password_confirmation,
        :number,
        :verification_value
      ]
    end

    # Settings dependent on locale
    #
    # We need to set this config before the promo environment gets loaded and
    # after the spree environment gets loaded...
    # This is because Spree uses `Spree::Config` while evaluating classes :scream:
    #
    # https://github.com/spree/spree/blob/2-0-stable/core/app/models/spree/calculator/per_item.rb#L6
    #
    # TODO: move back to spree initializer once we upgrade to a more recent version
    #       of Spree
    initializer 'ofn.spree_locale_settings', before: 'spree.promo.environment' do |app|
      Spree::Config['checkout_zone'] = ENV['CHECKOUT_ZONE']
      Spree::Config['currency'] = ENV['CURRENCY']
    end

    # Register Spree calculators
    Rails.application.reloader.to_prepare do
      Openfoodnetwork::Application.config.spree.calculators.shipping_methods = [
        Calculator::FlatPercentItemTotal,
        Calculator::FlatRate,
        Calculator::FlexiRate,
        Calculator::PerItem,
        Calculator::PriceSack,
        Calculator::Weight
      ]
    end
    
    initializer 'spree.register.calculators' do |app|
      app.config.spree.calculators.shipping_methods = [
        Calculator::FlatPercentItemTotal,
        Calculator::FlatRate,
        Calculator::FlexiRate,
        Calculator::PerItem,
        Calculator::PriceSack,
        Calculator::Weight
      ]

      app.config.spree.calculators.add_class('enterprise_fees')
      config.spree.calculators.enterprise_fees = [
        Calculator::FlatPercentPerItem,
        Calculator::FlatRate,
        Calculator::FlexiRate,
        Calculator::PerItem,
        Calculator::PriceSack,
        Calculator::Weight
      ]

      app.config.spree.calculators.add_class('payment_methods')
      config.spree.calculators.payment_methods = [
        Calculator::FlatPercentItemTotal,
        Calculator::FlatRate,
        Calculator::FlexiRate,
        Calculator::PerItem,
        Calculator::PriceSack
      ]

      app.config.spree.calculators.add_class('tax_rates')
      config.spree.calculators.tax_rates = [
        Calculator::DefaultTax
      ]
    end

    # Register Spree payment methods
    initializer "spree.gateway.payment_methods", :after => "spree.register.payment_methods" do |app|
      app.config.spree.payment_methods << Spree::Gateway::StripeConnect
      app.config.spree.payment_methods << Spree::Gateway::StripeSCA
      app.config.spree.payment_methods << Spree::Gateway::PayPalExpress
    end<commit_msg>move all calculators to reload block<commit_after>require_relative 'boot'

require "rails"
[
  "active_record/railtie",
  #"active_storage/engine",
  "action_controller/railtie",
  "action_view/railtie",
  "action_mailer/railtie",
  "active_job/railtie",
  #"action_cable/engine", # Enable this when installing StimulusReflex
  #"action_mailbox/engine",
  #"action_text/engine",
  "rails/test_unit/railtie",
  "sprockets/railtie" # Disable this after migrating to Webpacker
].each do |railtie|
  begin
    require railtie
  rescue LoadError
  end
end

require_relative "../lib/open_food_network/i18n_config"

require_relative '../lib/spree/core/environment'
require_relative '../lib/spree/core/mail_interceptor'

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end

module Openfoodnetwork
  class Application < Rails::Application

    config.to_prepare do
      # Load application's model / class decorators
      Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
        Rails.configuration.cache_classes ? require(c) : load(c)
      end
    end

    config.after_initialize do
      # We need this here because the test env file loads before the Spree engine is loaded
      Spree::Core::Engine.routes.default_url_options[:host] = 'test.host' if Rails.env == 'test'
    end

    # We reload the routes here
    #   so that the appended/prepended routes are available to the application.
    config.after_initialize do
      Rails.application.routes_reloader.reload!
    end

    initializer "spree.environment", before: :load_config_initializers do |app|
      app.config.spree = Spree::Core::Environment.new
      Spree::Config = app.config.spree.preferences # legacy access
    end

    initializer "spree.register.payment_methods" do |app|
      app.config.spree.payment_methods = [
        Spree::Gateway::Bogus,
        Spree::Gateway::BogusSimple,
        Spree::PaymentMethod::Check
      ]
    end

    initializer "spree.mail.settings" do |_app|
      Spree::Core::MailSettings.init
      Mail.register_interceptor(Spree::Core::MailInterceptor)
    end

    # filter sensitive information during logging
    initializer "spree.params.filter" do |app|
      app.config.filter_parameters += [
        :password,
        :password_confirmation,
        :number,
        :verification_value
      ]
    end

    # Settings dependent on locale
    #
    # We need to set this config before the promo environment gets loaded and
    # after the spree environment gets loaded...
    # This is because Spree uses `Spree::Config` while evaluating classes :scream:
    #
    # https://github.com/spree/spree/blob/2-0-stable/core/app/models/spree/calculator/per_item.rb#L6
    #
    # TODO: move back to spree initializer once we upgrade to a more recent version
    #       of Spree
    initializer 'ofn.spree_locale_settings', before: 'spree.promo.environment' do |app|
      Spree::Config['checkout_zone'] = ENV['CHECKOUT_ZONE']
      Spree::Config['currency'] = ENV['CURRENCY']
    end

    # Register Spree calculators
    Rails.application.reloader.to_prepare do
      app = Openfoodnetwork::Application
      app.config.spree.calculators.shipping_methods = [
        Calculator::FlatPercentItemTotal,
        Calculator::FlatRate,
        Calculator::FlexiRate,
        Calculator::PerItem,
        Calculator::PriceSack,
        Calculator::Weight
      ]

      app.config.spree.calculators.add_class('enterprise_fees')
      app.config.spree.calculators.enterprise_fees = [
        Calculator::FlatPercentPerItem,
        Calculator::FlatRate,
        Calculator::FlexiRate,
        Calculator::PerItem,
        Calculator::PriceSack,
        Calculator::Weight
      ]

      app.config.spree.calculators.add_class('payment_methods')
      app.config.spree.calculators.payment_methods = [
        Calculator::FlatPercentItemTotal,
        Calculator::FlatRate,
        Calculator::FlexiRate,
        Calculator::PerItem,
        Calculator::PriceSack
      ]

      app.config.spree.calculators.add_class('tax_rates')
      app.config.spree.calculators.tax_rates = [
        Calculator::DefaultTax
      ]
    end

    # Register Spree payment methods
    initializer "spree.gateway.payment_methods", :after => "spree.register.payment_methods" do |app|
      app.config.spree.payment_methods << Spree::Gateway::StripeConnect
      app.config.spree.payment_methods << Spree::Gateway::StripeSCA
      app.config.spree.payment_methods << Spree::Gateway::PayPalExpress
    end
{'fraction_non_alphanumeric': 0.10317297850562948, 'fraction_numerical': 0.0010235414534288639, 'mean_word_length': 3.2855263157894736, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 7, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3670645', 'n_tokens_mistral': 3083, 'n_tokens_neox': 2988, 'n_words': 600}