#!/usr/bin/env ruby
# Transparent helper to simply document code sections
def require_file_stub(name)
  yield
end

ENV['RAILS_ENV'] ||= 'development'

require_file_stub 'config/environment' do
  # Load the Rails application.
  require_file_stub 'config/application' do
    require_file_stub 'config/boot' do
      # Set up gems listed in the Gemfile.
      ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
      require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
    end

    # Pick the frameworks you want:
    require "active_record/railtie"
    require "action_controller/railtie"
    require "action_mailer/railtie" unless ENV['NO_ACTION_MAILER']
    require "action_view/railtie"

    # Require the gems listed in Gemfile, including any gems
    # you've limited to :test, :development, or :production.
    if Rails::VERSION::STRING.to_f < 3.1
      Bundler.require(:default, Rails.env)
    else
      Bundler.require(*Rails.groups)
    end

    module ExampleApp
      class Application < Rails::Application
        config.eager_load = false
        config.eager_load_paths.clear

        # Don't care if the mailer can't send.
        config.action_mailer.raise_delivery_errors = false unless ENV['NO_ACTION_MAILER']

        if ENV['CUSTOM_PREVIEW_PATH']
          config.action_mailer.preview_path = ENV['CUSTOM_PREVIEW_PATH']
        end
        if ENV['SHOW_PREVIEWS']
          config.action_mailer.show_previews = (ENV['SHOW_PREVIEWS'] == 'true')
        end
      end
    end

    I18n.enforce_available_locales = true if I18n.respond_to?(:enforce_available_locales)
  end

  # Initialize the Rails application.
  Rails.application.initialize!
end

exit if ENV['NO_ACTION_MAILER']
if ENV['DEFAULT_URL']
  puts ActionMailer::Base.default_url_options[:host]
elsif defined?(::ActionMailer::Preview)
  puts Rails.application.config.action_mailer.preview_path
end

# This will force the loading of ActionMailer settings to ensure we do not
# accicentally set something we should not
ActionMailer::Base.smtp_settings
