acts-as-messageable 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README ADDED
File without changes
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ begin
2
+ require 'jeweler'
3
+ Jeweler::Tasks.new do |gemspec|
4
+ gemspec.name = "acts-as-messageable"
5
+ gemspec.email = "piotr.nielacny@gmail.com"
6
+ gemspec.summary = "Make user messageable!;-)"
7
+ gemspec.homepage = "http://github.com/LTe/acts_as_messageable"
8
+ gemspec.authors = ["Piotr Nielacny"]
9
+ gemspec.files = FileList["[A-Z]*", "{generators,lib,spec,rails}/**/*"] - FileList["**/*.log"]
10
+ end
11
+ Jeweler::GemcutterTasks.new
12
+ rescue LoadError
13
+ puts "Jeweler not available. Install it with: gem install jeweler"
14
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,12 @@
1
+ require "active_record"
2
+
3
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
4
+
5
+ require 'acts_as_messageable/acts-as-messageable'
6
+ require 'acts_as_messageable/message'
7
+
8
+ $LOAD_PATH.shift
9
+
10
+ if defined?(ActiveRecord::Base)
11
+ ActiveRecord::Base.send :include, ActsAsMessageable::User
12
+ end
@@ -0,0 +1,50 @@
1
+ module ActsAsMessageable
2
+ module User
3
+
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ base.send :include, InstanceMethods
7
+ end
8
+
9
+ module ClassMethods
10
+ def acts_as_messageable
11
+ class_eval do
12
+ has_many :messages, :as => :messageable, :class_name => "ActsAsMessageable::Message"
13
+ end
14
+ end
15
+
16
+ #include ActsAsMessageable::User::InstanceMethods
17
+ end
18
+
19
+ module InstanceMethods
20
+ def messages(args = {})
21
+ if args[:from] != nil && args[:to] == nil
22
+ base.where(%(#{ActsAsMessageable::Message.table_name}.from = ?), args[:from].id)
23
+ elsif args[:from] == nil && args[:to] != nil
24
+ base.where(%(#{ActsAsMessageable::Message.table_name}.to = ?), args[:to].id)
25
+ elsif args[:from] != nil && args[:to] != nil
26
+ base.where(%(#{ActsAsMessageable::Message.table_name}.from = ? AND
27
+ #{ActsAsMessageable::Message.table_name}.to = ?),
28
+ args[:from].id, args[:to].id)
29
+ else
30
+ self.messages
31
+ end
32
+ end
33
+
34
+ def send_message(to, topic, body)
35
+ @message = ActsAsMessageable::Message.new
36
+ @message.from, @message.to = self.id, to.id
37
+ @message.topic, @message.body = topic, body
38
+
39
+ self.messages << @message
40
+ to.messages << @message
41
+
42
+ self.save
43
+ to.save
44
+ @message.save
45
+ end
46
+
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,12 @@
1
+ module ActsAsMessageable
2
+ class Message < ::ActiveRecord::Base
3
+ belongs_to :messageable, :polymorphic => true
4
+
5
+ attr_accessible :topic,
6
+ :body,
7
+ :messageable_type,
8
+ :messageable_id,
9
+ :from,
10
+ :to
11
+ end
12
+ end
@@ -0,0 +1,27 @@
1
+ require 'rails/generators/migration'
2
+
3
+ module ActsAsMessageable
4
+ class MigrationGenerator < Rails::Generators::Base
5
+ include Rails::Generators::Migration
6
+
7
+ desc "Generates migration for Tag and Tagging models"
8
+
9
+ def self.source_root
10
+ @source_root ||= File.join(File.dirname(__FILE__), 'templates')
11
+ end
12
+
13
+ def self.next_migration_number(dirname)
14
+ if ActiveRecord::Base.timestamped_migrations
15
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
16
+ else
17
+ "%.3d" % (current_migration_number(dirname) + 1)
18
+ end
19
+ end
20
+
21
+ def create_migration_file
22
+ migration_template 'migration.rb', 'db/migrate/create_messages_table.rb'
23
+ end
24
+
25
+
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ class CreateMessagesTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :messages do |t|
4
+ t.string :topic
5
+ t.string :body
6
+ t.references :messageable, :polymorphic => true
7
+ t.integer :from
8
+ t.integer :to
9
+ end
10
+
11
+ add_index :messages, [:from, :to]
12
+ end
13
+
14
+ def self.down
15
+ drop_table :messages
16
+ end
17
+ end
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'acts_as_messageable'
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acts-as-messageable
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - Piotr Nielacny
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-08-03 00:00:00 +02:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description:
22
+ email: piotr.nielacny@gmail.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files:
28
+ - README
29
+ files:
30
+ - README
31
+ - Rakefile
32
+ - VERSION
33
+ - lib/acts-as-messageable.rb
34
+ - lib/acts_as_messageable/acts-as-messageable.rb
35
+ - lib/acts_as_messageable/message.rb
36
+ - lib/generators/acts_as_messageable/migration/migration_generator.rb
37
+ - lib/generators/acts_as_messageable/migration/templates/migration.rb
38
+ - rails/init.rb
39
+ has_rdoc: true
40
+ homepage: http://github.com/LTe/acts_as_messageable
41
+ licenses: []
42
+
43
+ post_install_message:
44
+ rdoc_options:
45
+ - --charset=UTF-8
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ segments:
54
+ - 0
55
+ version: "0"
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ requirements: []
65
+
66
+ rubyforge_project:
67
+ rubygems_version: 1.3.7
68
+ signing_key:
69
+ specification_version: 3
70
+ summary: Make user messageable!;-)
71
+ test_files: []
72
+