talkie 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +14 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +11 -0
  7. data/Gemfile.lock +205 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +120 -0
  10. data/Rakefile +23 -0
  11. data/app/assets/javascripts/talkie/application.js +5 -0
  12. data/app/assets/stylesheets/talkie/_comment.scss +103 -0
  13. data/app/assets/stylesheets/talkie/_form.scss +50 -0
  14. data/app/assets/stylesheets/talkie/_variables.scss +71 -0
  15. data/app/assets/stylesheets/talkie/application.scss +3 -0
  16. data/app/controllers/talkie/comments_controller.rb +45 -0
  17. data/app/controllers/talkie_controller.rb +19 -0
  18. data/app/helpers/talkie/application_helper.rb +20 -0
  19. data/app/models/talkie/comment.rb +13 -0
  20. data/app/views/talkie/comments/_comment.html.erb +44 -0
  21. data/app/views/talkie/comments/_form.html.erb +11 -0
  22. data/app/views/talkie/comments/_template.html.erb +3 -0
  23. data/bin/console +14 -0
  24. data/bin/setup +10 -0
  25. data/config/locales/en.yml +16 -0
  26. data/config/locales/es.yml +16 -0
  27. data/config/routes.rb +3 -0
  28. data/lib/generators/talkie/install_generator.rb +27 -0
  29. data/lib/generators/talkie/templates/create_talkie_comments.rb +27 -0
  30. data/lib/generators/talkie/templates/talkie.rb +46 -0
  31. data/lib/talkie.rb +30 -0
  32. data/lib/talkie/acts_as_commentable.rb +27 -0
  33. data/lib/talkie/acts_as_talker.rb +29 -0
  34. data/lib/talkie/comments_renderer.rb +43 -0
  35. data/lib/talkie/controller.rb +18 -0
  36. data/lib/talkie/engine.rb +15 -0
  37. data/lib/talkie/permission.rb +16 -0
  38. data/lib/talkie/renderer_helper.rb +42 -0
  39. data/lib/talkie/version.rb +3 -0
  40. data/talkie.gemspec +41 -0
  41. metadata +251 -0
data/bin/setup ADDED
@@ -0,0 +1,10 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ # Install required gems
6
+ gem install bundler --conservative
7
+ bundle check || bundle install
8
+
9
+ # Set up database for the application that Talkie tests against
10
+ cd spec/dummy && RAILS_ENV=test bundle exec rails db:create db:migrate
@@ -0,0 +1,16 @@
1
+ ---
2
+ en:
3
+ talkie:
4
+ comments:
5
+ form:
6
+ submit: "Publish"
7
+ body_placeholder: "Write your comment..."
8
+ count:
9
+ plural: "comments"
10
+ singular: "comment"
11
+ comment:
12
+ reply: "Reply"
13
+ delete: "DELETE"
14
+ form:
15
+ reply: "Reply"
16
+ body_placeholder: "Write your deply..."
@@ -0,0 +1,16 @@
1
+ ---
2
+ es:
3
+ talkie:
4
+ comments:
5
+ form:
6
+ submit: "Publicar"
7
+ body_placeholder: "Escribe tu comentario..."
8
+ count:
9
+ plural: "comentarios"
10
+ singular: "comentario"
11
+ comment:
12
+ reply: "Responder"
13
+ delete: "BORRAR"
14
+ form:
15
+ reply: "Responder"
16
+ body_placeholder: "Escribe tu respuesta..."
data/config/routes.rb ADDED
@@ -0,0 +1,3 @@
1
+ Talkie::Engine.routes.draw do
2
+ resources :comments, only: [:create, :destroy]
3
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators'
4
+ require 'rails/generators/migration'
5
+
6
+ module Talkie
7
+ module Generators
8
+ class InstallGenerator < Rails::Generators::Base
9
+ include Rails::Generators::Migration
10
+
11
+ source_root File.expand_path('../templates', __FILE__)
12
+
13
+ def create_talkie_initializer
14
+ copy_file 'talkie.rb', 'config/initializers/talkie.rb'
15
+ end
16
+
17
+ def self.next_migration_number(path)
18
+ next_migration_number = current_migration_number(path) + 1
19
+ ActiveRecord::Migration.next_migration_number(next_migration_number)
20
+ end
21
+
22
+ def create_talkie_migration
23
+ migration_template "create_talkie_comments.rb", "db/migrate/create_talkie_comments.rb"
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ class CreateTalkieComments < ActiveRecord::Migration[5.0]
2
+ def self.up
3
+ create_table :talkie_comments do |t|
4
+ t.string :creator_type
5
+ t.integer :creator_id
6
+ t.integer :commentable_id
7
+ t.string :commentable_type
8
+ t.text :body, null: false
9
+ t.integer :parent_id
10
+ t.integer :lft
11
+ t.integer :rgt
12
+ t.integer :children_count, default: 0
13
+ t.datetime :deleted_at
14
+
15
+ t.timestamps null: false
16
+ end
17
+
18
+ add_index :talkie_comments, :commentable_id
19
+ add_index :talkie_comments, :commentable_type
20
+ add_index :talkie_comments, [:creator_id, :creator_type],
21
+ name: 'index_talkie_comments_on_creator_id_and_creator_type'
22
+ end
23
+
24
+ def self.down
25
+ drop_table :talkie_comments
26
+ end
27
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Use this hook to configure talkie options for comments scope, creator info and so forth.
4
+ # Some configurations are set on the view, check https://github.com/kurenn/talkie for more
5
+ # information
6
+ Talkie.configure do |config|
7
+ # ==> Default comments scope configuration
8
+ # Configure the default_scope to use by Talkie::Comment class
9
+ # Notice you need to set it to a lambda function
10
+ # config.default_comments_scope = -> { order(created_at: :desc) }
11
+
12
+
13
+ # ==> Comment creator handler
14
+ # Configure the text to display on the creator for each comment
15
+ # By default it will use the email
16
+ # You can set this to a method on your model, or a simple attribute
17
+ # config.comment_creator_handler = :email
18
+
19
+ # ==> Creator path
20
+ # Configure the path to redirect to on the creator link for each comment
21
+ # By default it will use a '#'
22
+ # Notice you need to set it to a lambda function, which receives:
23
+ # a user and the router, both arguments are necessary
24
+ # Here is a quick example on how you may want to configure it
25
+ # config.creator_path = lambda { |user, router| router.user_path(user) }
26
+ # or
27
+ # config.creator_path = lambda { |user, router| router.profile_path(user) }
28
+ #
29
+ # The default looks like:
30
+ # config.creator_path = lambda { |user, router| "#" }
31
+
32
+
33
+ # ==> Creator avatar url
34
+ # Configure the avatar url for the comment creator
35
+ # By default it will use a http:////api.adorable.io/avatars/40/abott@adorable.png
36
+ # Notice you need to set it to a lambda function, which receives:
37
+ # a user which is mandatory
38
+ # Here is a quick example on how you may want to configure it
39
+ # config.creator_avatar_url = lambda { |user| user.profile_image_url(:thumb) }
40
+ # or
41
+ # config.creator_avatar_url = lambda { |user| user.avatar(:thumb) }
42
+ # Make sure you return a string
43
+ #
44
+ # The default looks like:
45
+ # config.creator_avatar_url = lambda { |user| "//api.adorable.io/avatars/40/abott@adorable.png" }
46
+ end
data/lib/talkie.rb ADDED
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "talkie/version"
4
+ require "talkie/engine"
5
+ require "awesome_nested_set"
6
+
7
+ module Talkie
8
+
9
+ @@default_comments_scope = -> { order(created_at: :desc) }
10
+ mattr_accessor :default_comments_scope
11
+
12
+ @@comment_creator_handler = :email
13
+ mattr_accessor :comment_creator_handler
14
+
15
+ @@creator_path = lambda { |_user, _router| "#" }
16
+ mattr_accessor :creator_path
17
+
18
+ @@creator_avatar_url = lambda { |_user| "//api.adorable.io/avatars/40/abott@adorable.png" }
19
+ mattr_accessor :creator_avatar_url
20
+
21
+ def self.configure
22
+ yield self
23
+ end
24
+ end
25
+
26
+ require "talkie/acts_as_talker"
27
+ require "talkie/acts_as_commentable"
28
+ require "talkie/permission"
29
+ require "talkie/controller"
30
+ require "talkie/renderer_helper"
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Talkie
4
+ module ActsAsCommentable
5
+ extend ActiveSupport::Concern
6
+
7
+ module InstanceMethods
8
+ def root_parents
9
+ comments.where(parent_id: nil)
10
+ end
11
+ end
12
+
13
+ module ClassMethods
14
+ def acts_as_commentable
15
+ has_many :comments, as: :commentable,
16
+ class_name: "Talkie::Comment",
17
+ inverse_of: :commentable
18
+
19
+ include Talkie::ActsAsCommentable::InstanceMethods
20
+ end
21
+
22
+ alias_method :is_commentable, :acts_as_commentable
23
+ end
24
+ end
25
+ end
26
+
27
+ ActiveRecord::Base.send :include, Talkie::ActsAsCommentable
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Talkie
4
+ module ActsAsTalker
5
+ def self.included(base)
6
+ base.extend(ClassMethods)
7
+ end
8
+
9
+ module ClassMethods
10
+ def acts_as_talker
11
+ class_eval do
12
+ has_many :comments, as: :creator,
13
+ class_name: 'Talkie::Comment',
14
+ inverse_of: :creator
15
+
16
+ def owns_comment?(comment)
17
+ self == comment.creator
18
+ end
19
+ end
20
+ end
21
+
22
+ alias_method :acts_as_commentator, :acts_as_talker
23
+ alias_method :acts_as_speaker, :acts_as_talker
24
+ alias_method :acts_as_commenter, :acts_as_talker
25
+ end
26
+ end
27
+ end
28
+
29
+ ActiveRecord::Base.send :include, Talkie::ActsAsTalker
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Talkie
4
+ class CommentsRenderer
5
+ attr_reader :commentable
6
+
7
+ def initialize(view_context, commentable, options = {})
8
+ @view_context = view_context
9
+ @commentable = commentable
10
+ @options = options
11
+ end
12
+
13
+ def render
14
+ @view_context.render "talkie/comments/template"
15
+ end
16
+
17
+ def nested_enabled?
18
+ @options[:nested] || false
19
+ end
20
+
21
+ def display_user_avatar?
22
+ @options[:display_user_avatar].present?
23
+ end
24
+
25
+ def display_user_handler?
26
+ @options[:display_user_handler] || false
27
+ end
28
+
29
+ def root_comments
30
+ comments = @commentable.root_parents
31
+ comments = comments.includes(:creator) if display_user_info?
32
+ comments = comments.includes(:children) if nested_enabled?
33
+
34
+ comments
35
+ end
36
+
37
+ private
38
+
39
+ def display_user_info?
40
+ display_user_handler? || display_user_avatar?
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Talkie
4
+ module Controller
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ delegate :allow?, to: :current_permission
9
+ helper_method :allow?
10
+ end
11
+
12
+ protected
13
+
14
+ def current_permission
15
+ @current_permission ||= Talkie::Permission.new(current_user)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Talkie
4
+ class Engine < ::Rails::Engine
5
+ isolate_namespace Talkie
6
+
7
+ initializer 'talkie_helpers.action_controller' do
8
+ ActiveSupport.on_load :action_controller do
9
+ helper Talkie::ApplicationHelper
10
+ include Talkie::RendererHelper
11
+ include Talkie::Controller
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Talkie
4
+ class Permission < Struct.new(:user)
5
+ def allow?(action, comment)
6
+ action = action.to_s
7
+
8
+ if user
9
+ return true if action.in? %w[create]
10
+ return true if user.owns_comment?(comment) && action.in?(%w[destroy])
11
+ end
12
+
13
+ false
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "talkie/comments_renderer"
4
+
5
+ module Talkie
6
+ module RendererHelper
7
+ extend ActiveSupport::Concern
8
+
9
+ DELEGATED_METHODS_TO_COMMENTS_RENDERER = %i[commentable
10
+ root_comments
11
+ nested_enabled?
12
+ display_user_handler?
13
+ display_user_avatar?].freeze
14
+
15
+ HELPER_METHODS = %i[talkie_on
16
+ nested_enabled?
17
+ display_user_handler?
18
+ display_user_avatar?
19
+ root_comments
20
+ commentable].freeze
21
+
22
+ included do
23
+ delegate *DELEGATED_METHODS_TO_COMMENTS_RENDERER, to: :comments_renderer
24
+ helper_method *HELPER_METHODS
25
+ end
26
+
27
+ protected
28
+
29
+ def talkie_on(*args)
30
+ options = args.extract_options!
31
+ commentable = args[0]
32
+
33
+ @comments_renderer ||= Talkie::CommentsRenderer.new(view_context, commentable, options)
34
+
35
+ @comments_renderer.render
36
+ end
37
+
38
+ def comments_renderer
39
+ @comments_renderer
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,3 @@
1
+ module Talkie
2
+ VERSION = "0.1.0"
3
+ end
data/talkie.gemspec ADDED
@@ -0,0 +1,41 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ lib = File.expand_path("../lib", __FILE__)
5
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
+ require "talkie/version"
7
+
8
+ Gem::Specification.new do |spec|
9
+ spec.name = "talkie"
10
+ spec.version = Talkie::VERSION
11
+ spec.authors = ["Abraham Kuri"]
12
+ spec.email = ["kurenn@icalialabs.com"]
13
+
14
+ spec.summary = %q{A Rails Engine to easily integrate comments}
15
+ spec.description = %q{A Rails Engine to easily integrate comments to any model. Provides views and helpful generators}
16
+ spec.homepage = "https://github.com/kurenn/talkie"
17
+ spec.license = "MIT"
18
+
19
+ # Specify which files should be added to the gem when it is released.
20
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
22
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
23
+ end
24
+ spec.bindir = "exe"
25
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
+ spec.require_paths = ["lib"]
27
+
28
+ spec.add_development_dependency "ammeter", "~> 1.1"
29
+ spec.add_development_dependency "bundler", "~> 1.17"
30
+ spec.add_development_dependency "jquery-rails", "~> 4.3"
31
+ spec.add_development_dependency "rake", "~> 10.0"
32
+ spec.add_development_dependency "rails-controller-testing", "~> 1.0"
33
+ spec.add_development_dependency "rspec", "~> 3.0"
34
+ spec.add_development_dependency "rspec-rails", "~> 3.8"
35
+ spec.add_development_dependency "pry", "~> 0.12"
36
+ spec.add_development_dependency "rails-i18n", "~> 5.1"
37
+
38
+ spec.add_dependency "rails", "~> 5.0"
39
+ spec.add_dependency "sassc-rails", "~> 2.1"
40
+ spec.add_dependency "awesome_nested_set", "~> 3.1"
41
+ end
metadata ADDED
@@ -0,0 +1,251 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: talkie
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Abraham Kuri
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-06-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ammeter
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.1'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.17'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.17'
41
+ - !ruby/object:Gem::Dependency
42
+ name: jquery-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rails-controller-testing
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.8'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.8'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.12'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.12'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rails-i18n
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '5.1'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '5.1'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rails
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '5.0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '5.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: sassc-rails
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '2.1'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '2.1'
167
+ - !ruby/object:Gem::Dependency
168
+ name: awesome_nested_set
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '3.1'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '3.1'
181
+ description: A Rails Engine to easily integrate comments to any model. Provides views
182
+ and helpful generators
183
+ email:
184
+ - kurenn@icalialabs.com
185
+ executables: []
186
+ extensions: []
187
+ extra_rdoc_files: []
188
+ files:
189
+ - ".gitignore"
190
+ - ".rspec"
191
+ - ".travis.yml"
192
+ - CODE_OF_CONDUCT.md
193
+ - Gemfile
194
+ - Gemfile.lock
195
+ - LICENSE.txt
196
+ - README.md
197
+ - Rakefile
198
+ - app/assets/javascripts/talkie/application.js
199
+ - app/assets/stylesheets/talkie/_comment.scss
200
+ - app/assets/stylesheets/talkie/_form.scss
201
+ - app/assets/stylesheets/talkie/_variables.scss
202
+ - app/assets/stylesheets/talkie/application.scss
203
+ - app/controllers/talkie/comments_controller.rb
204
+ - app/controllers/talkie_controller.rb
205
+ - app/helpers/talkie/application_helper.rb
206
+ - app/models/talkie/comment.rb
207
+ - app/views/talkie/comments/_comment.html.erb
208
+ - app/views/talkie/comments/_form.html.erb
209
+ - app/views/talkie/comments/_template.html.erb
210
+ - bin/console
211
+ - bin/setup
212
+ - config/locales/en.yml
213
+ - config/locales/es.yml
214
+ - config/routes.rb
215
+ - lib/generators/talkie/install_generator.rb
216
+ - lib/generators/talkie/templates/create_talkie_comments.rb
217
+ - lib/generators/talkie/templates/talkie.rb
218
+ - lib/talkie.rb
219
+ - lib/talkie/acts_as_commentable.rb
220
+ - lib/talkie/acts_as_talker.rb
221
+ - lib/talkie/comments_renderer.rb
222
+ - lib/talkie/controller.rb
223
+ - lib/talkie/engine.rb
224
+ - lib/talkie/permission.rb
225
+ - lib/talkie/renderer_helper.rb
226
+ - lib/talkie/version.rb
227
+ - talkie.gemspec
228
+ homepage: https://github.com/kurenn/talkie
229
+ licenses:
230
+ - MIT
231
+ metadata: {}
232
+ post_install_message:
233
+ rdoc_options: []
234
+ require_paths:
235
+ - lib
236
+ required_ruby_version: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - ">="
239
+ - !ruby/object:Gem::Version
240
+ version: '0'
241
+ required_rubygems_version: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ requirements: []
247
+ rubygems_version: 3.0.3
248
+ signing_key:
249
+ specification_version: 4
250
+ summary: A Rails Engine to easily integrate comments
251
+ test_files: []