From a50812c00085bb003b9108c9aac2b1080cbe8fa0 Mon Sep 17 00:00:00 2001 From: Abraham Kuri Date: Wed, 23 Apr 2014 10:02:11 -0500 Subject: [PATCH] Adds install generator --- Gemfile | 4 +++ lib/generators/sabisu/install_generator.rb | 13 +++++++++ lib/generators/sabisu/templates/sabisu.rb | 14 +++++++++ lib/sabisu.rb | 33 +++++++++++++++++++++- lib/sabisu/railtie.rb | 14 +++++++++ sabisu.gemspec | 1 + 6 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 lib/generators/sabisu/install_generator.rb create mode 100644 lib/generators/sabisu/templates/sabisu.rb create mode 100644 lib/sabisu/railtie.rb diff --git a/Gemfile b/Gemfile index 4700a8a..f69daac 100644 --- a/Gemfile +++ b/Gemfile @@ -2,3 +2,7 @@ source 'https://rubygems.org' # Specify your gem's dependencies in sabisu.gemspec gemspec + +gem 'railties', github: 'rails/rails' +gem 'activemodel', github: 'rails/rails' +gem 'actionpack', github: 'rails/rails' diff --git a/lib/generators/sabisu/install_generator.rb b/lib/generators/sabisu/install_generator.rb new file mode 100644 index 0000000..dc42895 --- /dev/null +++ b/lib/generators/sabisu/install_generator.rb @@ -0,0 +1,13 @@ +module Sabisu + module Generators + class InstallGenerator < Rails::Generators::Base + source_root File.expand_path("../templates", __FILE__) + + desc "Creates a Sabisu initializer in your application" + + def copy_initializer + template "sabisu.rb", "config/initializers/sabisu.rb" + end + end + end +end diff --git a/lib/generators/sabisu/templates/sabisu.rb b/lib/generators/sabisu/templates/sabisu.rb new file mode 100644 index 0000000..eb6b6df --- /dev/null +++ b/lib/generators/sabisu/templates/sabisu.rb @@ -0,0 +1,14 @@ +# Use this module to configure the sabisu available options + +Sabisu.setup do |config| + + # Base uri for posting the + # config.base_api_uri = nil + + # Ignored attributes for building the forms + # config.ignored_attributes = %w{ created_at updated_at id } + + # HTTP methods + # config.http_methods = %w{ GET POST PUT DELETE PATCH } + +end diff --git a/lib/sabisu.rb b/lib/sabisu.rb index f4d8031..1be81ce 100644 --- a/lib/sabisu.rb +++ b/lib/sabisu.rb @@ -1,5 +1,36 @@ require "sabisu/version" module Sabisu - # Your code goes here... + + # We ignore some attribues that might cause a collision between models + @@default_ignored_attributes = %w{ created_at updated_at id } + + # We append the extra attributes you want to ignore to the default ones + mattr_accessor :ignored_attributes + @@ignored_attributes = @@ignored_attributes.to_a + @@default_ignored_attributes + + # Base api uri for the endpoints + mattr_accessor :base_api_uri + @@base_api_uri = nil + + # HTTP methods for the api + @@default_http_methods = %w{ GET POST PUT DELETE PATCH } + + mattr_accessor :http_methods + @@http_methods = @@http_methods.to_a + @@default_http_methods + + @@configured = false + + def self.configured? #:nodoc: + @@configured + end + + #Method to configure sabisu + def self.setup + @@configured = true + yield self + end + end + +require 'sabisu/railtie' diff --git a/lib/sabisu/railtie.rb b/lib/sabisu/railtie.rb new file mode 100644 index 0000000..3f0ffe2 --- /dev/null +++ b/lib/sabisu/railtie.rb @@ -0,0 +1,14 @@ +require 'rails/railtie' + +module Sabisu + class Railtie < Rails::Railtie + config.eager_load_namespaces << Sabisu + + config.after_initialize do + unless Sabisu.configured? + warn '[Sabisu] Sabisu is not configured in the application and will use the default values.' + + ' We recommend you to check the file just created with the installer and setup it up.' + end + end + end +end diff --git a/sabisu.gemspec b/sabisu.gemspec index a4035a0..92bb16b 100644 --- a/sabisu.gemspec +++ b/sabisu.gemspec @@ -25,4 +25,5 @@ Gem::Specification.new do |spec| spec.add_dependency "activemodel", '~> 4.0' spec.add_dependency "actionpack", '~> 4.0' + spec.add_dependency "httparty" end