From fd9d4d6dea0bb48048588da21f205ac812728d52 Mon Sep 17 00:00:00 2001 From: Florent Monbillard Date: Fri, 3 Jun 2011 22:55:57 +0200 Subject: [PATCH] first commit --- .gitignore | 4 +++ Gemfile | 6 ++++ Rakefile | 2 ++ .../rolify/role/.role_generator.rb.swp | Bin 0 -> 12288 bytes lib/generators/rolify/role/role_generator.rb | 34 ++++++++++++++++++ .../rolify/role/templates/migration.rb | 15 ++++++++ lib/generators/rolify/role/templates/role.rb | 3 ++ lib/rolify.rb | 3 ++ lib/rolify/version.rb | 3 ++ rolify.gemspec | 21 +++++++++++ spec/spec.opts | 0 spec/spec_helper.rb | 4 +++ 12 files changed, 95 insertions(+) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 Rakefile create mode 100644 lib/generators/rolify/role/.role_generator.rb.swp create mode 100644 lib/generators/rolify/role/role_generator.rb create mode 100644 lib/generators/rolify/role/templates/migration.rb create mode 100644 lib/generators/rolify/role/templates/role.rb create mode 100644 lib/rolify.rb create mode 100644 lib/rolify/version.rb create mode 100644 rolify.gemspec create mode 100644 spec/spec.opts create mode 100644 spec/spec_helper.rb diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..4040c6c1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.gem +.bundle +Gemfile.lock +pkg/* diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..af735845 --- /dev/null +++ b/Gemfile @@ -0,0 +1,6 @@ +source "http://rubygems.org" + +gem "activerecord", :require => "active_record" + +# Specify your gem's dependencies in rolify.gemspec +gemspec diff --git a/Rakefile b/Rakefile new file mode 100644 index 00000000..14cfe0b5 --- /dev/null +++ b/Rakefile @@ -0,0 +1,2 @@ +require 'bundler' +Bundler::GemHelper.install_tasks diff --git a/lib/generators/rolify/role/.role_generator.rb.swp b/lib/generators/rolify/role/.role_generator.rb.swp new file mode 100644 index 0000000000000000000000000000000000000000..e4b9d63419789832db7afa10b92baf164087d9f2 GIT binary patch literal 12288 zcmeI2&x;&I6vr!GJZLmT@TBnUb=Xgpt$ zB{?QH&!Yc`|A80(g2aEoQ*stXztuB6v%h%gns#*&A0T^nQ9y zVVzRy`KP~4-g|me?cY#}>)J*0ajWPyALpgi!x(ThH(^vc>&|%RM|ap3xYT7kH?|ph zSDM+us5H~joGtq-IKQ&uAx96^t7oa79-me`gn$re!|crYlj_}b@0{IA-lEq|Ul%4q zKnMr{As_^VfDjM@LO=-o&j^J2g!&6TzW^oBiKTFnB?N?k5D)@FKnMr{As_^VfDjM@ zLO=-oM+jtvQg>cb>h#NK2><`b-vFMzs?-zc7w9MG5p)y!7J3u<^%bRlgnodoLSI1V zp%^zlO5H$Qo%E7xSXYy?*(0%Ii`Azv)Z=Rl>M;I!d~yX+|d^l_g^$6r~A&>VUpE# zvP((j3ND*?w{_Sy>~(H4RMXmmeUm%S4=@${kL=wJ9TTYy8P*jAuIe%ij2wNHF%&Wt z)6v4z4IpDgS?8YNskaWhf#gLAA)A(L?(>6WnI^WLyZS(PPBXN!seq&H5+y`?S)(&s z=qZ=Z&Kn(^t}=T-=NcuZ_Z>fQKtv>s`2IgHI+lYM^$H#sGj7Bk%3P)1zY+8;yQKBSE1zA^dZ(}7*t~2DrfZog zoAG#w1Y_;v@uY9LYqfh_6cev}=z~q$KFJ!!4ghUSrj>J}mKKD-302DT?bdjvZ68w~ L9jITi-d2ADuziOY literal 0 HcmV?d00001 diff --git a/lib/generators/rolify/role/role_generator.rb b/lib/generators/rolify/role/role_generator.rb new file mode 100644 index 00000000..f433bec0 --- /dev/null +++ b/lib/generators/rolify/role/role_generator.rb @@ -0,0 +1,34 @@ +require 'rails/generators/migration' + +module Rolify + module Generators + class RoleGenerator < Rails::Generators::Base + include Rails::Generators::Migration + + source_root File.expand_path('../templates', __FILE__) + argument :role_cname, :type => :string, :default => "Role" + argument :user_cname, :type => :string, :default => "User" + + desc "Generates a model with the given NAME and a migration file." + + def generate_role + template "role.rb", "app/models/role.rb" + inject_into_class(model_path, user_cname.camelize) do + " has_and_belongs_to_many :#{role_cname.tableize}\n" + end + end + + def copy_role_file + migration_template "migration.rb", "db/migrate/rolify_create_#{role_cname.tableize}" + end + + def model_path + File.join("app", "models", "#{user_cname.underscore}.rb") + end + + def self.next_migration_number(path) + Time.now.utc.strftime("%Y%m%d%H%M%S") + end + end + end +end diff --git a/lib/generators/rolify/role/templates/migration.rb b/lib/generators/rolify/role/templates/migration.rb new file mode 100644 index 00000000..7c45931e --- /dev/null +++ b/lib/generators/rolify/role/templates/migration.rb @@ -0,0 +1,15 @@ +class RolifyCreate<%= role_cname.camelize %> < ActiveRecord::Migration + def change + create_table(<%= role_cname.tableize.to_sym %>) do |t| + t.string :name + t.references :resource, :polymorphic => true + + t.timestamps + end + + create_table(<%= (user_cname.tableize + "_" + role_cname.tableize).to_sym %>, :id => false) do |t| + t.references :<%= user_cname.underscore.singularize %> + t.references :<%= role_cname.underscore.singularize %> + end + end +end diff --git a/lib/generators/rolify/role/templates/role.rb b/lib/generators/rolify/role/templates/role.rb new file mode 100644 index 00000000..757126ad --- /dev/null +++ b/lib/generators/rolify/role/templates/role.rb @@ -0,0 +1,3 @@ +class <%= role_cname.camelize %> < ActiveRecord::Base + has_and_belongs_to_many :<%= user_cname.tableize %> +end diff --git a/lib/rolify.rb b/lib/rolify.rb new file mode 100644 index 00000000..06b8f351 --- /dev/null +++ b/lib/rolify.rb @@ -0,0 +1,3 @@ +module Rolify + # Your code goes here... +end diff --git a/lib/rolify/version.rb b/lib/rolify/version.rb new file mode 100644 index 00000000..8cea1f6c --- /dev/null +++ b/lib/rolify/version.rb @@ -0,0 +1,3 @@ +module Rolify + VERSION = "0.0.1" +end diff --git a/rolify.gemspec b/rolify.gemspec new file mode 100644 index 00000000..6708b60f --- /dev/null +++ b/rolify.gemspec @@ -0,0 +1,21 @@ +# -*- encoding: utf-8 -*- +$:.push File.expand_path("../lib", __FILE__) +require "rolify/version" + +Gem::Specification.new do |s| + s.name = "rolify" + s.version = Rolify::VERSION + s.platform = Gem::Platform::RUBY + s.authors = ["Florent Monbillard"] + s.email = ["f.monbillard@gmail.com"] + s.homepage = "" + s.summary = %q{Roles library with object scoping} + s.description = %q{Very simple Roles library without any authorization enforcement (built to use with cancan) supporting scope on object: user.is_moderator?(Forum.first) => # return false if user is moderator of another Forum } + + s.rubyforge_project = s.name + + s.files = `git ls-files`.split("\n") + s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") + s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } + s.require_paths = ["lib"] +end diff --git a/spec/spec.opts b/spec/spec.opts new file mode 100644 index 00000000..e69de29b diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 00000000..eb25dec4 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,4 @@ +re 'rubygems' +require 'bundler/setup' + +Bundler.require(:default)