aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/generators/inboxes/install_generator.rb10
-rw-r--r--lib/generators/inboxes/templates/install.rb9
-rw-r--r--lib/generators/inboxes/templates/upgrade_discussible.rb9
-rw-r--r--lib/generators/inboxes/upgrade_discussible_generator.rb36
-rw-r--r--lib/generators/inboxes/views_generator.rb2
-rw-r--r--lib/inboxes.rb8
-rw-r--r--lib/inboxes/ability.rb6
-rw-r--r--lib/inboxes/active_record_extension.rb6
-rw-r--r--lib/inboxes/engine.rb2
-rw-r--r--lib/inboxes/railtie.rb4
-rw-r--r--lib/inboxes/version.rb2
11 files changed, 67 insertions, 27 deletions
diff --git a/lib/generators/inboxes/install_generator.rb b/lib/generators/inboxes/install_generator.rb
index d5d2a97..48ac223 100644
--- a/lib/generators/inboxes/install_generator.rb
+++ b/lib/generators/inboxes/install_generator.rb
@@ -5,19 +5,15 @@ module Inboxes
module Generators
class InstallGenerator < Rails::Generators::Base
include Rails::Generators::Migration
-
+
source_root File.expand_path("../templates", __FILE__)
-
- # desc "Generates migration for Discussion, Message, Speaker and DiscussionView models"
+
+ desc "Generates migration for Inboxes"
def self.orm
Rails::Generators.options[:rails][:orm]
end
- # def self.source_root
- # File.join(File.dirname(__FILE__), 'templates', (orm.to_s unless orm.class.eql?(String)) )
- # end
-
def self.orm_has_migration?
[:active_record].include? orm
end
diff --git a/lib/generators/inboxes/templates/install.rb b/lib/generators/inboxes/templates/install.rb
index 91fded7..e89c128 100644
--- a/lib/generators/inboxes/templates/install.rb
+++ b/lib/generators/inboxes/templates/install.rb
@@ -2,6 +2,7 @@ class InstallInboxes < ActiveRecord::Migration
def self.up
create_table :discussions do |t|
t.integer :messages_count, :default => 0 # counter cache
+ t.references :discussable
t.timestamps
end
@@ -9,14 +10,14 @@ class InstallInboxes < ActiveRecord::Migration
t.references :user
t.references :discussion
t.text :body
-
+
t.timestamps
end
-
+
create_table :speakers do |t|
t.references :user
t.references :discussion
-
+
t.timestamps
end
end
@@ -26,4 +27,4 @@ class InstallInboxes < ActiveRecord::Migration
drop_table :discussions
drop_table :messages
end
-end \ No newline at end of file
+end
diff --git a/lib/generators/inboxes/templates/upgrade_discussible.rb b/lib/generators/inboxes/templates/upgrade_discussible.rb
new file mode 100644
index 0000000..dc39dd9
--- /dev/null
+++ b/lib/generators/inboxes/templates/upgrade_discussible.rb
@@ -0,0 +1,9 @@
+class UpgradeDiscussibleInboxes < ActiveRecord::Migration
+ def self.change
+ add_column :discussions, :discussible_id, :integer
+ end
+
+ def self.down
+ remove_column :discussions, :discussible_id
+ end
+end
diff --git a/lib/generators/inboxes/upgrade_discussible_generator.rb b/lib/generators/inboxes/upgrade_discussible_generator.rb
new file mode 100644
index 0000000..475f668
--- /dev/null
+++ b/lib/generators/inboxes/upgrade_discussible_generator.rb
@@ -0,0 +1,36 @@
+require 'rails/generators'
+require 'rails/generators/migration'
+
+module Inboxes
+ module Generators
+ class UpgradeDiscussibleGenerator < Rails::Generators::Base
+ include Rails::Generators::Migration
+
+ source_root File.expand_path("../templates", __FILE__)
+
+ desc "Generates migration for Inboxes 0.2.0 update"
+
+ def self.orm
+ Rails::Generators.options[:rails][:orm]
+ end
+
+ def self.orm_has_migration?
+ [:active_record].include? orm
+ end
+
+ def self.next_migration_number(dirname)
+ if ActiveRecord::Base.timestamped_migrations
+ migration_number = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
+ migration_number += 1
+ migration_number.to_s
+ else
+ "%.3d" % (current_migration_number(dirname) + 1)
+ end
+ end
+
+ def copy_migration
+ migration_template 'upgrade_discussible.rb', 'db/migrate/upgrade_discussible_inboxes.rb'
+ end
+ end
+ end
+end
diff --git a/lib/generators/inboxes/views_generator.rb b/lib/generators/inboxes/views_generator.rb
index 117c05d..e9a8818 100644
--- a/lib/generators/inboxes/views_generator.rb
+++ b/lib/generators/inboxes/views_generator.rb
@@ -5,7 +5,7 @@ module Inboxes
class ViewsGenerator < Rails::Generators::Base
source_root File.expand_path('../../../../app/views', __FILE__)
#class_option :template_engine, :type => :string, :aliases => '-e', :desc => 'Template engine for the views. Available options are "erb" and "haml".'
-
+
# TODO support of both haml and erb
def copy_or_fetch
filename_pattern = File.join self.class.source_root, "*" #/*.html.#{template_engine}"
diff --git a/lib/inboxes.rb b/lib/inboxes.rb
index f1b9c7a..af88b0c 100644
--- a/lib/inboxes.rb
+++ b/lib/inboxes.rb
@@ -3,10 +3,9 @@ require "inboxes/railtie"
require "inboxes/ability"
require "inboxes/engine"
require "inboxes/active_record_extension"
-
+require "cancan"
module Inboxes
-
def self.configure(&block)
yield @config ||= Inboxes::Configuration.new
end
@@ -25,11 +24,10 @@ module Inboxes
config_accessor :faye_enabled
def param_name
- config.param_name.respond_to?(:call) ? config.param_name.call() : config.param_name
+ config.param_name.respond_to?(:call) ? config.param_name.call() : config.param_name
end
end
-
+
# adding method inboxes for models
ActiveRecord::Base.extend(Inboxes::ActiveRecordExtension)
-
end
diff --git a/lib/inboxes/ability.rb b/lib/inboxes/ability.rb
index 3ed216b..c9f8d6b 100644
--- a/lib/inboxes/ability.rb
+++ b/lib/inboxes/ability.rb
@@ -13,17 +13,17 @@ module Inboxes
discussion.can_participate?(user)
end
end
-
+
# Message
# can :create, Message do |message|
# message.discussion.can_participate?(user)
# end
- #
+ #
# # Speaker
# can [:create, :destroy], Speaker do |speaker|
# speaker.discussion.can_participate?(user)
# end
end
end
-
+
end \ No newline at end of file
diff --git a/lib/inboxes/active_record_extension.rb b/lib/inboxes/active_record_extension.rb
index 34fd387..b3c3231 100644
--- a/lib/inboxes/active_record_extension.rb
+++ b/lib/inboxes/active_record_extension.rb
@@ -3,9 +3,9 @@ module Inboxes
def has_inboxes(options = {})
# field = options[:as] || name
# prefix = options[:prefix] || "with"
-
+
has_many :speakers, :dependent => :destroy
- has_many :discussions, :through => :speakers
+ has_many :discussions, :as => :discussable, :through => :speakers
end
end
-end \ No newline at end of file
+end
diff --git a/lib/inboxes/engine.rb b/lib/inboxes/engine.rb
index 01f63b5..b61eebc 100644
--- a/lib/inboxes/engine.rb
+++ b/lib/inboxes/engine.rb
@@ -5,7 +5,7 @@ module Inboxes
def self.activate
Ability.register_ability(InboxesAbility)
end
-
+
config.to_prepare &method(:activate).to_proc
end
end \ No newline at end of file
diff --git a/lib/inboxes/railtie.rb b/lib/inboxes/railtie.rb
index 673784e..1626b20 100644
--- a/lib/inboxes/railtie.rb
+++ b/lib/inboxes/railtie.rb
@@ -4,7 +4,7 @@ require "inboxes/ability"
module Inboxes
class Railtie < ::Rails::Railtie
config.inboxes = ActiveSupport::OrderedOptions.new
-
+
initializer "inboxes.configure" do |app|
Inboxes.configure do |config|
config.user_name = app.config.inboxes[:user_name] || "email"
@@ -15,7 +15,7 @@ module Inboxes
# app.config.middleware.insert_before "::Rails::Rack::Logger", "Inboxes::Middleware"
end
-
+
# def self.activate
# Ability.register_ability(InboxesAbility)
# end
diff --git a/lib/inboxes/version.rb b/lib/inboxes/version.rb
index 5470b38..ee23565 100644
--- a/lib/inboxes/version.rb
+++ b/lib/inboxes/version.rb
@@ -1,3 +1,3 @@
module Inboxes
- VERSION = "0.1.5"
+ VERSION = "0.2.0"
end