diff options
| author | Azul <azul@leap.se> | 2014-05-16 08:42:36 +0200 | 
|---|---|---|
| committer | Azul <azul@leap.se> | 2014-05-16 08:42:36 +0200 | 
| commit | 8fbbb8717f0578536b97c2dc0883c632f120e976 (patch) | |
| tree | 17aeb2b48ada703ac916a9a65fbf3c75a5dadb86 /lib/extensions | |
| parent | 81555ec6244ed76f92e3629880f68104b8705817 (diff) | |
| parent | a4f7a410c536d88c91c834cab6ee950c71005ddd (diff) | |
Merge remote-tracking branch 'origin/develop'
Conflicts:
	app/assets/javascripts/srp
	test/nagios/soledad_sync.py
	test/nagios/webapp_login.py
Diffstat (limited to 'lib/extensions')
| -rw-r--r-- | lib/extensions/couchrest.rb | 95 | ||||
| -rw-r--r-- | lib/extensions/simple_form.rb | 28 | 
2 files changed, 123 insertions, 0 deletions
diff --git a/lib/extensions/couchrest.rb b/lib/extensions/couchrest.rb new file mode 100644 index 0000000..95f5d92 --- /dev/null +++ b/lib/extensions/couchrest.rb @@ -0,0 +1,95 @@ +module CouchRest +  module Model +    module Designs + +      class View + +        # so we can called Ticket.method.descending or Ticket.method.ascending +        def ascending +          self +        end +      end + +      class DesignMapper +        def load_views(dir) +          Dir.glob("#{dir}/*.js") do |js| +            name = File.basename(js, '.js') +            file = File.open(js, 'r') +            view name.to_sym, +              :map => file.read, +              :reduce => "function(key, values, rereduce) { return sum(values); }" +          end +        end +      end +    end + +    module Connection + +      module ClassMethods + +        def use_database(db) +          @database = prepare_database(db) +        rescue RestClient::Exception, +          Errno::EHOSTUNREACH, +          Errno::ECONNREFUSED => e +          message = "Could not connect to couch database #{db} due to #{e.to_s}" +          Rails.logger.warn message +          raise e.class.new(message) if APP_CONFIG[:reraise_errors] +        end +      end + +    end + +    module Utils +      module Migrate +        def self.load_all_models_with_engines +          self.load_all_models_without_engines +          return unless defined?(Rails) +          Dir[Rails.root + 'engines/*/app/models/**/*.rb'].each do |path| +            require path +          end +        end + +        class << self +          alias_method_chain :load_all_models, :engines +        end + +        def dump_all_models +          prepare_directory +          find_models.each do |model| +            model.design_docs.each do |design| +              dump_design(model, design) +            end +          end +        end + +        protected + +        def dump_design(model, design) +          dir = prepare_directory model.name.tableize +          filename = design.id.sub('_design/','') + '.json' +          puts dir + filename +          design.checksum +          File.open(dir + filename, "w") do |file| +            file.write(JSON.pretty_generate(design.to_hash)) +          end +        end + +        def prepare_directory(dir = '') +          dir = Rails.root + 'tmp' + 'designs' + dir +          Dir.mkdir(dir) unless Dir.exists?(dir) +          return dir +        end + +      end +    end + +  end + +  class ModelRailtie +    config.action_dispatch.rescue_responses.merge!( +      'CouchRest::Model::DocumentNotFound' => :not_found, +      'RestClient::ResourceNotFound' => :not_found +    ) +  end +end diff --git a/lib/extensions/simple_form.rb b/lib/extensions/simple_form.rb new file mode 100644 index 0000000..f28e18f --- /dev/null +++ b/lib/extensions/simple_form.rb @@ -0,0 +1,28 @@ +module WrappedButton +  def wrapped_button(*args, &block) +    template.content_tag :div, :class => "form-actions" do +      options = args.extract_options! +      options[:class] = ['btn-primary', options[:class]].compact +      args.unshift :loading +      args << options +      if cancel = options.delete(:cancel) +        cancel_link = template.link_to I18n.t('simple_form.buttons.cancel'), +          cancel, class: :btn +        button(*args, &block) + ' ' + cancel_link +      else +        button(*args, &block) +      end +    end +  end +end +SimpleForm::FormBuilder.send :include, WrappedButton + +module LoadingButton +  def loading_button(*args, &block) +    options = args.extract_options! +    options[:"data-loading-text"] = I18n.t('simple_form.buttons.loading') +    args << options +    button_button(*args, &block) +  end +end +SimpleForm::FormBuilder.send :include, LoadingButton  | 
