Permalink
Browse files

first commit

  • Loading branch information...
0 parents commit 5736c9f199970f90f443640f22d9582823a4fad5 @johnmcaliley johnmcaliley committed May 10, 2011
Showing with 13,641 additions and 0 deletions.
  1. +13 −0 Gemfile
  2. +20 −0 Gemfile.lock
  3. +20 −0 LICENSE.txt
  4. +285 −0 README.md
  5. +47 −0 Rakefile
  6. +1 −0 VERSION
  7. +13 −0 app/controllers/comments_controller.rb
  8. +16 −0 app/controllers/favorites_controller.rb
  9. +15 −0 app/controllers/ratings_controller.rb
  10. +13 −0 app/controllers/reputation_actions_controller.rb
  11. +32 −0 app/controllers/social_engine_controller.rb
  12. +15 −0 app/controllers/votes_controller.rb
  13. +82 −0 app/helpers/social_engine_helper.rb
  14. +10 −0 app/models/comment.rb
  15. +4 −0 app/models/favorite.rb
  16. +6 −0 app/models/rating.rb
  17. +24 −0 app/models/reputation.rb
  18. +15 −0 app/models/reputation_action.rb
  19. +14 −0 app/models/social_engine/commentable.rb
  20. +14 −0 app/models/social_engine/favoriteable.rb
  21. +37 −0 app/models/social_engine/helpers.rb
  22. +33 −0 app/models/social_engine/rateable.rb
  23. +14 −0 app/models/social_engine/reputatable.rb
  24. +17 −0 app/models/social_engine/sociable.rb
  25. +16 −0 app/models/social_engine/social_user.rb
  26. +28 −0 app/models/social_engine/voteable.rb
  27. +13 −0 app/models/vote.rb
  28. +11 −0 app/views/comments/_comment.haml
  29. +8 −0 app/views/comments/_form.haml
  30. +4 −0 app/views/comments/_list.haml
  31. +1 −0 app/views/comments/new.haml
  32. +6 −0 app/views/common/_user_attributes.haml
  33. +8 −0 app/views/favorites/_widget.haml
  34. +6 −0 app/views/ratings/_form.haml
  35. +3 −0 app/views/ratings/_rating.haml
  36. +1 −0 app/views/ratings/new.haml
  37. +5 −0 app/views/reputation_actions/_form.haml
  38. +3 −0 app/views/reputation_actions/edit.haml
  39. +21 −0 app/views/reputation_actions/index.haml
  40. +9 −0 app/views/reputation_actions/new.haml
  41. +5 −0 app/views/third_party/_fb_friend_box.html.erb
  42. +13 −0 app/views/third_party/_fb_javascript_sdk.html.erb
  43. +10 −0 app/views/third_party/_fb_og_tags.html.erb
  44. +3 −0 app/views/third_party/_fblike.html.erb
  45. +6 −0 app/views/third_party/_tweetme.html.erb
  46. +13 −0 app/views/votes/_widget.haml
  47. +3 −0 config/routes.rb
  48. +14 −0 lib/generators/social_engine/install/USAGE
  49. +33 −0 lib/generators/social_engine/install/install_generator.rb
  50. +23 −0 lib/generators/social_engine/install/templates/create_comments_table.rb
  51. +19 −0 lib/generators/social_engine/install/templates/create_favorites_table.rb
  52. +21 −0 lib/generators/social_engine/install/templates/create_ratings_table.rb
  53. +14 −0 lib/generators/social_engine/install/templates/create_reputation_actions_table.rb
  54. +19 −0 lib/generators/social_engine/install/templates/create_reputations_table.rb
  55. +21 −0 lib/generators/social_engine/install/templates/create_votes_table.rb
  56. +145 −0 lib/generators/social_engine/install/templates/formtastic.css
  57. +26 −0 lib/generators/social_engine/install/templates/social_engine.css
  58. +87 −0 lib/generators/social_engine/install/templates/social_engine_yetting.yml
  59. +9 −0 lib/generators/social_engine/user_reputation/templates/add_reputation_to_users_table.rb
  60. +22 −0 lib/generators/social_engine/user_reputation/user_reputation_generator.rb
  61. +11 −0 lib/social_engine.rb
  62. +13 −0 lib/social_engine/core_ext/array.rb
  63. +26 −0 lib/social_engine/core_ext/hash.rb
  64. +43 −0 lib/social_engine/engine.rb
  65. 0 lib/social_engine/railties/tasks.rake
  66. +124 −0 social_engine.gemspec
  67. +5 −0 test_app/.autotest
  68. +4 −0 test_app/.gitignore
  69. +1 −0 test_app/.rspec
  70. +21 −0 test_app/Gemfile
  71. +174 −0 test_app/Gemfile.lock
  72. +256 −0 test_app/README
  73. +7 −0 test_app/Rakefile
  74. +12 −0 test_app/app/controllers/application_controller.rb
  75. +5 −0 test_app/app/controllers/articles_controller.rb
  76. +13 −0 test_app/app/controllers/mock_auth_controller.rb
  77. +2 −0 test_app/app/controllers/third_party_controller.rb
  78. +2 −0 test_app/app/helpers/application_helper.rb
  79. +8 −0 test_app/app/models/article.rb
  80. +3 −0 test_app/app/models/post.rb
  81. +4 −0 test_app/app/models/user.rb
  82. +5 −0 test_app/app/views/articles/comments_list.haml
  83. +8 −0 test_app/app/views/articles/comments_test.haml
  84. +33 −0 test_app/app/views/articles/show.haml
  85. +14 −0 test_app/app/views/layouts/application.html.erb
  86. +4 −0 test_app/app/views/third_party/fb_friend_box.haml
  87. +11 −0 test_app/app/views/third_party/fb_like.haml
  88. +4 −0 test_app/app/views/third_party/tweetme.haml
  89. +5 −0 test_app/autotest/discover.rb
  90. +4 −0 test_app/config.ru
  91. +42 −0 test_app/config/application.rb
  92. +13 −0 test_app/config/boot.rb
  93. +8 −0 test_app/config/cucumber.yml
  94. +25 −0 test_app/config/database.yml
  95. +5 −0 test_app/config/environment.rb
  96. +26 −0 test_app/config/environments/development.rb
  97. +49 −0 test_app/config/environments/production.rb
  98. +35 −0 test_app/config/environments/test.rb
  99. +7 −0 test_app/config/initializers/backtrace_silencers.rb
  100. +10 −0 test_app/config/initializers/inflections.rb
  101. +5 −0 test_app/config/initializers/mime_types.rb
  102. +7 −0 test_app/config/initializers/secret_token.rb
  103. +8 −0 test_app/config/initializers/session_store.rb
  104. +5 −0 test_app/config/locales/en.yml
  105. +13 −0 test_app/config/routes.rb
  106. +87 −0 test_app/config/yettings/social_engine.yml
  107. +13 −0 test_app/db/migrate/20110121044132_create_article_table.rb
  108. +13 −0 test_app/db/migrate/20110121213926_create_posts.rb
  109. +13 −0 test_app/db/migrate/20110124035332_create_users.rb
  110. +11 −0 test_app/db/migrate/20110127034054_add_email_website_to_users.rb
  111. +9 −0 test_app/db/migrate/20110131182740_add_article_id_to_post.rb
  112. +21 −0 test_app/db/migrate/20110201143543_create_reviews_table.rb
  113. +21 −0 test_app/db/migrate/20110207033938_create_reviews_table.rb
  114. +7 −0 test_app/db/seeds.rb
  115. +55 −0 test_app/features/comments.feature
  116. +26 −0 test_app/features/favorites.feature
  117. +33 −0 test_app/features/generator.feature
  118. +42 −0 test_app/features/ratings.feature
  119. +11 −0 test_app/features/reputation.feature
  120. +28 −0 test_app/features/reputation_actions.feature
  121. +134 −0 test_app/features/step_definitions/social_engine_steps.rb
  122. +219 −0 test_app/features/step_definitions/web_steps.rb
  123. +35 −0 test_app/features/support/env.rb
  124. +51 −0 test_app/features/support/paths.rb
  125. +29 −0 test_app/features/support/resources/custom_comment_list.html
  126. +7 −0 test_app/features/support/resources/custom_fb_friend_box.html
  127. +6 −0 test_app/features/support/resources/custom_fb_og_tags.html
  128. +3 −0 test_app/features/support/resources/custom_fblike.html
  129. +8 −0 test_app/features/support/resources/custom_tweetme.html
  130. +35 −0 test_app/features/support/resources/default_comment_list.html
  131. +7 −0 test_app/features/support/resources/default_fb_friend_box.html
  132. +6 −0 test_app/features/support/resources/default_fb_og_tags.html
  133. +3 −0 test_app/features/support/resources/default_fblike.html
  134. +8 −0 test_app/features/support/resources/default_tweetme.html
  135. +1 −0 test_app/features/support/resources/fb_javascript_sdk.html
  136. +28 −0 test_app/features/third_party.feature
  137. +40 −0 test_app/features/votes.feature
  138. 0 test_app/lib/tasks/.gitkeep
  139. +53 −0 test_app/lib/tasks/cucumber.rake
  140. +26 −0 test_app/public/404.html
  141. +26 −0 test_app/public/422.html
  142. +26 −0 test_app/public/500.html
  143. 0 test_app/public/favicon.ico
  144. BIN test_app/public/images/rating1-mouse.png
  145. BIN test_app/public/images/rating1-selected.png
  146. BIN test_app/public/images/rating1.png
  147. BIN test_app/public/images/rating2-mouse.png
  148. BIN test_app/public/images/rating2-selected.png
  149. BIN test_app/public/images/rating2.png
  150. BIN test_app/public/images/rating3-mouse.png
  151. BIN test_app/public/images/rating3-selected.png
  152. BIN test_app/public/images/rating3.png
  153. BIN test_app/public/images/rating4-mouse.png
  154. BIN test_app/public/images/rating4-selected.png
  155. BIN test_app/public/images/rating4.png
  156. BIN test_app/public/images/rating5-mouse.png
  157. BIN test_app/public/images/rating5-selected.png
  158. BIN test_app/public/images/rating5.png
  159. +239 −0 test_app/public/index.html
  160. +2 −0 test_app/public/javascripts/application.js
  161. +965 −0 test_app/public/javascripts/controls.js
  162. +974 −0 test_app/public/javascripts/dragdrop.js
  163. +1,123 −0 test_app/public/javascripts/effects.js
  164. +6,001 −0 test_app/public/javascripts/prototype.js
  165. +175 −0 test_app/public/javascripts/rails.js
  166. +5 −0 test_app/public/robots.txt
  167. 0 test_app/public/stylesheets/.gitkeep
  168. +145 −0 test_app/public/stylesheets/formtastic.css
  169. +26 −0 test_app/public/stylesheets/social_engine.css
  170. +10 −0 test_app/script/cucumber
  171. +6 −0 test_app/script/rails
  172. +15 −0 test_app/spec/core_ext/array_spec.rb
  173. +31 −0 test_app/spec/core_ext/hash_spec.rb
  174. +3 −0 test_app/spec/fixtures/articles.yml
  175. +5 −0 test_app/spec/fixtures/users.yml
  176. +43 −0 test_app/spec/models/comments_spec.rb
  177. +10 −0 test_app/spec/models/favorites_spec.rb
  178. +39 −0 test_app/spec/models/ratings_spec.rb
  179. +65 −0 test_app/spec/models/reputation_spec.rb
  180. +19 −0 test_app/spec/models/social_engine_spec.rb
  181. +54 −0 test_app/spec/models/votes_spec.rb
  182. +56 −0 test_app/spec/spec_helper.rb
  183. 0 test_app/vendor/plugins/.gitkeep
13 Gemfile
@@ -0,0 +1,13 @@
+source "http://rubygems.org"
+# Add dependencies required to use your gem here.
+# Example:
+# gem "activesupport", ">= 2.3.5"
+
+# Add dependencies to develop your gem here.
+# Include everything needed to run rake, tests, features, etc.
+group :development do
+ gem "shoulda", ">= 0"
+ gem "bundler", "~> 1.0.0"
+ gem "jeweler", "~> 1.5.1"
+ gem "rcov", ">= 0"
+end
@@ -0,0 +1,20 @@
+GEM
+ remote: http://rubygems.org/
+ specs:
+ git (1.2.5)
+ jeweler (1.5.1)
+ bundler (~> 1.0.0)
+ git (>= 1.2.5)
+ rake
+ rake (0.8.7)
+ rcov (0.9.9)
+ shoulda (2.11.3)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ bundler (~> 1.0.0)
+ jeweler (~> 1.5.1)
+ rcov
+ shoulda
@@ -0,0 +1,20 @@
+Copyright (c) 2011 John McAliley
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
285 README.md
@@ -0,0 +1,285 @@
+# social_engine
+
+social_engine is a rails engine that provides very basic social functionality that you can attach to any model, including comments, ratings, voting, favorites and user reputation. This plugin is intended to provide you with building blocks, as opposed to a full blown social networking site. Each building block is customizable and social_engine provides the controllers, helpers, models and css friendly views. You just include the helpers in your view, provide any non-default options and customize the look using CSS. This is only compatible with Rails 3 and Ruby 1.9.2.
+
+## Installation
+
+Add this to your Gemfile and run "bundle install"
+
+ gem "social_engine"
+
+Run the social_engine generator to add the needed migrations and static assets
+
+ rails g social_engine:install
+
+If you plan on using the user reputation module, then you will also need to run that generator, which will alter your 'users' table and add a field named "reputation"
+
+ rails g social_engine:user_reputation
+
+Run the migrations
+
+ rake db:migrate
+
+This will add the following tables to your database:
+
+ comments
+ ratings
+ votes
+ favorites
+ reputations
+ reputation_actions
+
+## Usage
+
+Here is an example of how you would add functionality this on an 'Article' model:
+
+ class Article < ActiveRecord::Base
+ is_sociable
+ end
+
+When you add this line to your model, it makes it rateable, voteable and commentable, and favoriteable. You can also add the functionality individually if you do not want all 4 social aspects in your model.
+
+ class Article < ActiveRecord::Base
+ is_commentable
+ is_voteable
+ is_rateable
+ is_favoriteable
+ end
+
+Make your user model social and make it have reputation
+
+ class User < ActiveRecord::Base
+ has_reputation
+ is_social
+ end
+
+## View helpers
+
+For most situations, these helpers will suffice. The view helpers will give you forms, widgets or lists and social_engine provides controllers that will redirect to :back when you submit the forms. Using HAML for examples, but you can use the same inside <% %> for erb
+
+create up/down/count vote widget (similar to Stack Overflow)
+
+ = vote_widget(@article)
+
+adds 5 radio buttons (by default) and a submit to rate something 1-5
+
+ = rating_form(@article)
+
+add a rating form with custom number of radio buttons
+
+ = rating_form(@article, 3)
+
+Create a default comment form
+
+ = comment_form(@article)
+
+Create a comment form using options. By default, the form will ask for name, email and website. You can specify which fields you want and the text that should be displayed as the label for each.
+
+ # pass symbols to use the default name and email labels
+ = comment_form(@article, :name , :email)
+ # customize the name label by passing a value
+ = comment_form(@article, :name=>{:label=>"My Name"} , :email)
+
+List the comments using defaults
+
+ = comments_list(@article)
+
+List the comments with options. Defaults shown, all options are optional. For the date format, you should use the formats show here: http://snippets.dzone.com/posts/show/2255
+
+ = comments_list(@article, {:display_posted_by => true,
+ :display_date => true,
+ :date_format => "%m/%d/%Y at %H:%M"})
+
+Button so user can add it to their favorites list. This button will toggle b/w Add & Remove
+
+ = favorites_widget(@article)
+
+Default Tweetme button
+
+ = tweetme
+
+Tweetme button with options (all are optional with defaults shown as the values in this example)
+
+ = tweetme(:url => "http://mysaweetsite.com",
+ :text => "This website is saweet!",
+ :via => "@cowboycoded", # appends via to end of tweet
+ :count => "horizontal") # this will show the tweet count: horizontal, vertical or none
+
+Default Facebook Like button
+
+ = fb_like
+
+Facebook Like button with options (all are optional with defaults shown as the values in this example)
+
+ = fb_like(:url => request.url,
+ :layout => "standard", # standard, button_count or box_count
+ :faces => true, # true or false
+ :width => 450, # your choice
+ :action => "like", # like or recommend
+ :font => "lucida grande", # arial, lucida grande, segoi ui, tahoma, trebuchet ms, or verdana
+ :colorscheme => "light", #light or dark
+ :div_id: "fblike") #your choice
+
+Default Facebook Friend box
+
+ = fb_friend_box
+
+Facebook Friend box with options (all are optional)
+
+ = fb_friend_box( :width => 250,
+ :stream => false,
+ :header => true,
+ :faces => true,
+ :fb_page_url => "http://www.facebook.com/couponshack" )
+
+
+
+The views are meant to be CSS friendly and allow you to adjust the look of every part of the view by overriding the default styles. You can make changes to public/stylesheets/social_engine.css.
+
+## Models
+
+You are not tied to using the provided views and controllers to manage comments, votes, favorites and reputation. If you prefer your own implementation of controllers & views, you can still use the functionality of the models.
+
+Again, you need to make your model sociable first and make your user model have rep and be social
+
+ class Post < ActiveRecord::Base
+ is_sociable
+ end
+
+ class User < ActiveRecord::Base
+ is_social
+ has_reputation
+ end
+
+Once your model is sociable, you can add comments, ratings, votes, and favorites in the following ways.
+
+First create an instance of Post, so we can use the social methods that are included when you specify the post is_sociable:
+
+ post = Post.create(:name => "post")
+
+###Voting:
+
+Upvote a post:
+
+ post.upvote
+ post.vote_count #=> 1
+
+Downvote a post:
+
+ post.downvote
+ post.vote_count #=> -1
+
+Create a vote and vote value manually:
+
+ post.votes.create(:value => 99)
+ post.vote_sum #=> 99
+
+Delete all votes for a post:
+
+ post.upvote
+ post.votes.first.destroy
+ post.votes.size #=> 1 Why?? The set is cached
+ post.votes(true) # you have to reload the set by passing true
+ post.votes.size #=> 0
+
+NOTE: By default, voting is restricted to one per ip_address per object. There are 2 ways around this:
+1. Set fingerprint_method to "none" in config/yettings/social_engine.yml, which will disable the uniqueness validation
+2. pass validate false to the save method to skip validations. You have to use new/save instead of create like so:
+
+ vote = post.votes.new(:value=>1)
+ vote.save(false) # or vote.save(:validate=>false)
+
+###Comments
+
+Create a comment and attach a user to it
+
+ post.comments.create(:comment => "I'm sure whatever your thinking is correct", :user_id=>123)
+
+Create a comment using an anauthenticated user
+
+ post.comments.create(:comment => "I'm sure whatever your thinking is correct",
+ :unauthenticated_name => "ignored name",
+ :unauthenticated_email => "ignore@email.com",
+ :unauthenticated_website => "http://ignore.com")
+
+Destroy a comment
+
+ post.comments.first.destroy
+ post.comments(true) # remove the cache, so you can get the correct array size if you need it
+
+###Ratings
+
+Create a new rating with a user_id
+
+ post.ratings.create(:value=>5, :user_id=>123)
+
+Destroy a rating for a user_id
+
+ post.ratings.where(:user_id=>123).destroy_all
+
+Destroy all ratings for a post
+
+ post.ratings.destroy_all
+
+###Favorites
+
+ post.favorites.create(:user_id=>123)
+ User.find(123).favorites #=> outputs the favorite you just created
+
+###Reputation
+
+A primitive admin panel is provided to allow you to adjust reputation action values based on their name. The names of all reputation actions are pulled directly from
+the source code and a list is provided at the bottom of the admin panel for your convenience.
+
+There is a Reputation model and a ReputationAction model. Reputation stores the reputation_action_id, user_id, and the value. ReputationAction stores the name of an action, which is defined by you, and the default value.
+Note that if you change the value, you will have to update the existing records in the reputation table manually. By default, the reputation table stores the value of the reputation action at the time of creation.
+So in order for you to add reputation points to a user, you have to define the action and pass the user. Let's say you have a reputation action called "answered question" with a value of 5 points. And you have a controller
+called answers, with a create method. You would add this method to the controller:
+
+ class AnswersController < ApplicationController
+ def create
+ #do some stuff here to create the answer
+
+ # add the reputation
+ Reputation.add("answered question", current_user)
+ end
+
+The method aboves assumes that "current_user" returns the logged in user in this session. This add a record to the reputations table. If you ran the user_reputation generator shown in the Installation section of this document, then
+then Reputation.add will also add the value of that reputation action to the "reputation" field in the users table. This field is used to avoid joins and store the sum of all reputation record's values for that user.
+
+Assuming you have the "reputation" field in your users table, you just do this to get the total reputation value:
+
+ User.first.reputation
+
+Or if you choose not to add that field, you can get the reputation this way:
+
+ User.first.reputations.sum(:value)
+
+
+## Development Roadmap / TODO
+###Features
+1. More helpers for reputation
+2. Ajax methods for controllers & views, so you don't have to redirect_to :back
+3. Improve CSS and views
+
+###Behind the scenes
+1. Better test coverage
+2. Refactoring and DRYing (mainly tests)
+
+
+
+## Contributing to social_engine
+
+* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
+* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
+* Fork the project
+* Start a feature/bugfix branch
+* Commit and push until you are happy with your contribution
+* Make sure to add tests. Patches will not be accepted without Rspec or Cucumber tests.
+* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
+
+## Copyright
+
+Copyright (c) 2011 John McAliley. See LICENSE.txt for
+further details.
+
@@ -0,0 +1,47 @@
+require 'rubygems'
+require 'bundler'
+begin
+ Bundler.setup(:default, :development)
+rescue Bundler::BundlerError => e
+ $stderr.puts e.message
+ $stderr.puts "Run `bundle install` to install missing gems"
+ exit e.status_code
+end
+require 'rake'
+
+require 'jeweler'
+Jeweler::Tasks.new do |gem|
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
+ gem.name = "social_engine"
+ gem.homepage = "http://github.com/johnmcaliley/social_engine"
+ gem.license = "MIT"
+ gem.summary = %Q{social_engine}
+ gem.description = %Q{social_engine}
+ gem.email = "john@couponshack.com"
+ gem.authors = ["John McAliley"]
+ gem.add_dependency "yettings"
+ gem.add_dependency "inherited_resources"
+ gem.add_dependency "haml"
+ gem.add_dependency "formtastic"
+ gem.files.exclude "test_app"
+ gem.files.exclude ".autotest"
+ gem.files.exclude ".document"
+ gem.files.exclude "Rakefile"
+ gem.files.exclude "README.md"
+ gem.files.exclude "license.txt"
+ gem.files.exclude "Gemfile.lock"
+end
+Jeweler::RubygemsDotOrgTasks.new
+
+task :default => :test
+
+require 'rake/rdoctask'
+Rake::RDocTask.new do |rdoc|
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
+
+ rdoc.rdoc_dir = 'rdoc'
+ rdoc.title = "social_engine #{version}"
+ rdoc.rdoc_files.include('README*')
+ rdoc.rdoc_files.include('lib/**/*.rb')
+ rdoc.rdoc_files.include('app/**/*.rb')
+end
@@ -0,0 +1 @@
+0.0.0
Oops, something went wrong.

0 comments on commit 5736c9f

Please sign in to comment.