muzang-plugins 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/Rakefile +11 -0
  4. data/lib/muzang-plugins.rb +11 -0
  5. data/lib/muzang-plugins/helpers.rb +39 -0
  6. data/lib/muzang-plugins/muzang-eval.rb +51 -0
  7. data/lib/muzang-plugins/muzang-livereload.rb +19 -0
  8. data/lib/muzang-plugins/muzang-meme.rb +51 -0
  9. data/lib/muzang-plugins/muzang-motd.rb +21 -0
  10. data/lib/muzang-plugins/muzang-nerdpursuit.rb +95 -0
  11. data/lib/muzang-plugins/muzang-nerdpursuit/questions/algorithms/fastes_sorting_algorithm.json +14 -0
  12. data/lib/muzang-plugins/muzang-nerdpursuit/questions/algorithms/run_time_of_bst.json +14 -0
  13. data/lib/muzang-plugins/muzang-nerdpursuit/questions/bash/last_cmd_sub.json +13 -0
  14. data/lib/muzang-plugins/muzang-nerdpursuit/questions/bash/last_directory.json +14 -0
  15. data/lib/muzang-plugins/muzang-nerdpursuit/questions/bash/prefix_last_command.json +13 -0
  16. data/lib/muzang-plugins/muzang-nerdpursuit/questions/couchdb/new_database.json +10 -0
  17. data/lib/muzang-plugins/muzang-nerdpursuit/questions/css/attribute_selectors.json +14 -0
  18. data/lib/muzang-plugins/muzang-nerdpursuit/questions/css/background_image.json +15 -0
  19. data/lib/muzang-plugins/muzang-nerdpursuit/questions/css/float_left.json +14 -0
  20. data/lib/muzang-plugins/muzang-nerdpursuit/questions/css/hexadecimal_code.json +14 -0
  21. data/lib/muzang-plugins/muzang-nerdpursuit/questions/css/how_do_you_use_multiple_box_sha.json +15 -0
  22. data/lib/muzang-plugins/muzang-nerdpursuit/questions/css/media.json +14 -0
  23. data/lib/muzang-plugins/muzang-nerdpursuit/questions/css/position_fixed_support.json +14 -0
  24. data/lib/muzang-plugins/muzang-nerdpursuit/questions/css/position_property.json +15 -0
  25. data/lib/muzang-plugins/muzang-nerdpursuit/questions/css/release_date.json +14 -0
  26. data/lib/muzang-plugins/muzang-nerdpursuit/questions/css/roses.json +14 -0
  27. data/lib/muzang-plugins/muzang-nerdpursuit/questions/css/z-index_property.json +14 -0
  28. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/all_ur_base.json +14 -0
  29. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/answer_to_everything.json +14 -0
  30. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/club_mate_caffeine.json +14 -0
  31. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/ook_ook.json +15 -0
  32. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/prediction_gates.json +14 -0
  33. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/the_cake.json +15 -0
  34. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/to_which_year_marty_mcfly_wants.json +15 -0
  35. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/what_is_a_traditional_vulcan_sa.json +15 -0
  36. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/what_is_the_c_base.json +14 -0
  37. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/when_life_gives_you_lemons.json +14 -0
  38. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/where_are_the_characters_of_daw.json +15 -0
  39. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/which_character_in_star_trek_se.json +15 -0
  40. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/who_is_the_first_character_to_b.json +15 -0
  41. data/lib/muzang-plugins/muzang-nerdpursuit/questions/culture/yo_dawg.json +14 -0
  42. data/lib/muzang-plugins/muzang-nerdpursuit/questions/data/half_a_byte.json +14 -0
  43. data/lib/muzang-plugins/muzang-nerdpursuit/questions/flash/fps.json +14 -0
  44. data/lib/muzang-plugins/muzang-nerdpursuit/questions/flash/trace_something_in_as3.json +14 -0
  45. data/lib/muzang-plugins/muzang-nerdpursuit/questions/grafix/png.json +14 -0
  46. data/lib/muzang-plugins/muzang-nerdpursuit/questions/grafix/ps_save_for_web.json +14 -0
  47. data/lib/muzang-plugins/muzang-nerdpursuit/questions/grafix/screen_image_resolution.json +14 -0
  48. data/lib/muzang-plugins/muzang-nerdpursuit/questions/html/how_do_you_specify_html5_doctyp.json +15 -0
  49. data/lib/muzang-plugins/muzang-nerdpursuit/questions/html/img_tag.json +14 -0
  50. data/lib/muzang-plugins/muzang-nerdpursuit/questions/html/optional_html_tags.json +14 -0
  51. data/lib/muzang-plugins/muzang-nerdpursuit/questions/html/strict_doctype.json +14 -0
  52. data/lib/muzang-plugins/muzang-nerdpursuit/questions/http/HTCPCP.json +14 -0
  53. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/chrome_v8.json +10 -0
  54. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/fun_with_brackets.json +14 -0
  55. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/how_can_you_access_the_data_pas.json +15 -0
  56. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/jquery_sizzle.json +10 -0
  57. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/json.json +14 -0
  58. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/jsonp.json +14 -0
  59. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/nodetype_of_text_node.json +14 -0
  60. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/same_origin_policy.json +14 -0
  61. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/string_object_coercion_internals.json +14 -0
  62. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/typeof_arguments.json +14 -0
  63. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/valid_function_expression.json +14 -0
  64. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/what_s_4_2.json +15 -0
  65. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/what_s_typeof_null.json +12 -0
  66. data/lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/who_created_jquery.json +14 -0
  67. data/lib/muzang-plugins/muzang-nerdpursuit/questions/php/invited-php.json +14 -0
  68. data/lib/muzang-plugins/muzang-nerdpursuit/questions/python/square_numbers_in_list.json +14 -0
  69. data/lib/muzang-plugins/muzang-nerdpursuit/questions/rails/controller_action.json +14 -0
  70. data/lib/muzang-plugins/muzang-nerdpursuit/questions/rails/folders.json +14 -0
  71. data/lib/muzang-plugins/muzang-nerdpursuit/questions/rails/pluralize_person.json +14 -0
  72. data/lib/muzang-plugins/muzang-nerdpursuit/questions/rails/rails_first_shown.json +14 -0
  73. data/lib/muzang-plugins/muzang-nerdpursuit/questions/rails/rails_inventor.json +14 -0
  74. data/lib/muzang-plugins/muzang-nerdpursuit/questions/rails/rake_about.json +11 -0
  75. data/lib/muzang-plugins/muzang-nerdpursuit/questions/rails/simple_format.json +14 -0
  76. data/lib/muzang-plugins/muzang-nerdpursuit/questions/regex/emails.json +14 -0
  77. data/lib/muzang-plugins/muzang-nerdpursuit/questions/regex/lazy.json +13 -0
  78. data/lib/muzang-plugins/muzang-nerdpursuit/questions/regex/min_max_quantifier.json +14 -0
  79. data/lib/muzang-plugins/muzang-nerdpursuit/questions/regex/negative_look_ahead.json +14 -0
  80. data/lib/muzang-plugins/muzang-nerdpursuit/questions/regex/prime.json +10 -0
  81. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/2_seconds.json +15 -0
  82. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/about_ruby.json +14 -0
  83. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/absolute_superclass_1.8.json +14 -0
  84. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/absolute_superclass_1.9.json +14 -0
  85. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/active_record_base.json +14 -0
  86. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_all_but_the_first.json +15 -0
  87. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_all_but_the_first_and_last .json +15 -0
  88. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_all_but_the_last.json +15 -0
  89. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_ampersand.json +14 -0
  90. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_get_and remove_first_element.json +15 -0
  91. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_get_and remove_last_element.json +15 -0
  92. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_pipe.json +14 -0
  93. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_splat.json +14 -0
  94. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_to_csv_string.json +15 -0
  95. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/backticks_in_ruby.json +15 -0
  96. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/base_object.json +14 -0
  97. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/best_language.json +14 -0
  98. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/bitwise_and.json +14 -0
  99. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/bitwise_or.json +14 -0
  100. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/class_inheritance.json +14 -0
  101. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/collect_alternative.json +14 -0
  102. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/comparsion.json +14 -0
  103. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/constants.json +14 -0
  104. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/date_format_month.json +10 -0
  105. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/divmod.json +14 -0
  106. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/enumerable.json +14 -0
  107. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/equality.json +13 -0
  108. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/falsy.json +14 -0
  109. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/fizzbuzz.json +15 -0
  110. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/garbarge_collector_in_19.json +15 -0
  111. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/global_variable_character.json +14 -0
  112. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/hash_with_indifferent_access.json +14 -0
  113. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/how_is_ruby_licensed.json +15 -0
  114. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/how_many_gems.json +14 -0
  115. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/instance_exec.json +10 -0
  116. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/kanji_converter.json +10 -0
  117. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/kernel-sprintf-2.json +14 -0
  118. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/kernel-sprintf.json +14 -0
  119. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/kernel.json +14 -0
  120. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/matz.json +14 -0
  121. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/method_used_for_comparisions.json +15 -0
  122. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/mixins_are_what.json +15 -0
  123. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/new_lambda_calling_syntax.json +13 -0
  124. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/new_lambda_constructing_syntax.json +10 -0
  125. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/nil.json +14 -0
  126. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/nil_id.json +15 -0
  127. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/nilclass.json +10 -0
  128. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/numeric_types.json +14 -0
  129. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/private_method_in_ruby.json +14 -0
  130. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/protected_method_in_ruby.json +15 -0
  131. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/quo.json +10 -0
  132. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/ranges_three_dots.json +14 -0
  133. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/return_value_or.json +14 -0
  134. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/rspec_controller_render_views.json +10 -0
  135. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/spaceship_operator.json +15 -0
  136. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/string_clean_whitespace.json +15 -0
  137. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/sum_things_up.json +15 -0
  138. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/symbol_identity_01.json +14 -0
  139. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/symbol_identity_02.json +14 -0
  140. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/symbol_identity_03.json +14 -0
  141. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/symbol_string_ids.json +14 -0
  142. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/symbols.json +14 -0
  143. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/the_difference_between_and_operators.json +15 -0
  144. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/unless_wtf.json +14 -0
  145. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/weakref.json +10 -0
  146. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/what_did_matz_say_about_ruby.json +15 -0
  147. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/what_do_array.json +14 -0
  148. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/what_do_string.json +14 -0
  149. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/what_does_gil_stands_for.json +15 -0
  150. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/what_does_negate_regexp_operator_do.json +15 -0
  151. data/lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/what_is_a_mixin.json +14 -0
  152. data/lib/muzang-plugins/muzang-plusone.rb +49 -0
  153. data/lib/muzang-plugins/muzang-reddit.rb +42 -0
  154. data/lib/muzang-plugins/muzang-rubygems.rb +43 -0
  155. data/lib/muzang-plugins/version.rb +5 -0
  156. data/muzang-plugins.gemspec +23 -0
  157. data/spec/livereload_spec.rb +23 -0
  158. data/spec/meme_spec.rb +43 -0
  159. data/spec/motd_spec.rb +18 -0
  160. data/spec/muzang-eval_spec.rb +43 -0
  161. data/spec/nerdpursuit_spec.rb +76 -0
  162. data/spec/plusone_spec.rb +67 -0
  163. data/spec/reddit_spec.rb +45 -0
  164. data/spec/rubygems_spec.rb +37 -0
  165. data/spec/spec_helper.rb +11 -0
  166. data/spec/support/connection_mock.rb +15 -0
  167. data/spec/support/responses/meme.response +4 -0
  168. data/spec/support/responses/reddit.response +3 -0
  169. data/spec/support/responses/rubygems.response +3 -0
  170. metadata +259 -0
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/muzang-plugins/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Piotr Niełacny"]
6
+ gem.email = ["piotr.nielacny@gmail.com"]
7
+ gem.description = %q{Plugins for Muzang IRC bot}
8
+ gem.summary = %q{Basic plugins for Muzang IRC bot}
9
+ gem.homepage = ""
10
+
11
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
12
+ gem.files = `git ls-files`.split("\n")
13
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
14
+ gem.name = "muzang-plugins"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = Muzang::Plugins::VERSION
17
+
18
+ gem.add_dependency "em-http-request"
19
+ gem.add_dependency "muzang", "~> 1.0.0"
20
+
21
+ gem.add_development_dependency "em-ventually", "~> 0.1.2"
22
+ gem.add_development_dependency "rspec", "~> 2.6.0"
23
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+ require 'muzang-plugins/muzang-livereload'
3
+
4
+ describe "LiveReload" do
5
+ before(:each) do
6
+ @bot = stub
7
+ @livereload = LiveReload.new(@bot)
8
+ @bot.stub(:plugins => { LiveReload => @livereload })
9
+ @connection = stub(:msg => true)
10
+ Kernel.stub(:load)
11
+ @message = OpenStruct.new({:channel => "#test", :message => "!reload"})
12
+ end
13
+
14
+ it "should load plugins" do
15
+ Kernel.should_receive(:load).with('muzang-plugins/muzang-livereload.rb')
16
+ @livereload.call(@connection, @message)
17
+ end
18
+
19
+ it "should create new instance of plugin" do
20
+ LiveReload.should_receive(:new).with(@bot)
21
+ @livereload.call(@connection, @message)
22
+ end
23
+ end
data/spec/meme_spec.rb ADDED
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+ require 'muzang-plugins/muzang-meme'
3
+
4
+ describe "Meme" do
5
+ before do
6
+ @bot = stub(:channels => ["#test"])
7
+ @meme = Meme.new(@bot)
8
+ @connection = ConnectionMock.new
9
+ @url = "http://version1.api.memegenerator.net:80/Instance_Create?username=drug-bot&password=drug-bot&languageCode=en&generatorID=2&imageID=166088&text0=hi0&text1=hi1"
10
+ @file = File.expand_path("../support/responses/meme.response", __FILE__)
11
+ EventMachine::MockHttpRequest.pass_through_requests = false
12
+ EventMachine::MockHttpRequest.register_file(@url, :get, @file)
13
+ EventMachine::MockHttpRequest.activate!
14
+ @message = OpenStruct.new({:channel => "#test", :message => "meme", :nick => "LTe" })
15
+ end
16
+
17
+ it "should print pretty help" do
18
+ EM.run do
19
+ @meme.call(@connection, @message)
20
+ eventually(true) do
21
+ @connection.messages.include?("Type 'meme [name of meme] \"Text0\" \"Text1\"'") and
22
+ @connection.messages.include?("Available memes: #{Meme::MEMES.keys.join(" ")}")
23
+ end
24
+ end
25
+ end
26
+
27
+ it "should create meme and send message" do
28
+ @message.message = "meme yuno \"hi0\" \"hi1\""
29
+ EM.run do
30
+ @meme.call(@connection, @message)
31
+ eventually(1) { @connection.message_count }
32
+ eventually(true) { @connection.messages.include? "Meme: http://version1.api.memegenerator.net//cache/instances/400x/10/10725/10982714.jpg" }
33
+ end
34
+ end
35
+
36
+ it "should not create meme" do
37
+ @message.message = "meme asdkasdj \"hi0\" \"hi1\""
38
+ EM.run do
39
+ @meme.call(@connection, @message)
40
+ eventually(0) { @connection.message_count }
41
+ end
42
+ end
43
+ end
data/spec/motd_spec.rb ADDED
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+ require 'muzang-plugins/muzang-motd'
3
+
4
+ describe "Motd" do
5
+ before do
6
+ @message = OpenStruct.new({ :command => :join, :channel => "#test", :nick => "DRUG-bot" })
7
+ @bot = stub
8
+ @motd = Motd.new(@bot)
9
+ @bot.stub(:plugins => { Motd => @motd })
10
+ @connection = stub(:msg => true, :nick => "DRUG-bot")
11
+ end
12
+
13
+ it "should send message after join to channel" do
14
+ @connection.should_receive(:msg).with("#test", "DRUG-bot | Version: #{Muzang::VERSION} | Plugins: *Motd* ")
15
+ @motd.call(@connection, @message)
16
+ end
17
+ end
18
+
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+ require 'muzang-plugins/muzang-eval'
3
+
4
+ describe "Eval" do
5
+ before(:each) do
6
+ @bot = stub
7
+ @eval = Eval.new(@bot)
8
+ @connection = ConnectionMock.new
9
+ @message = OpenStruct.new({ :channel => "#test", :message => "% 1 + 1", :nick => "LTe" })
10
+ end
11
+
12
+ it "should eval ruby code" do
13
+ @message.message = "% 1 + 1"
14
+ EM.run do
15
+ @eval.call(@connection, @message)
16
+ eventually(true) { @connection.messages.include? "2" }
17
+ end
18
+ end
19
+
20
+ it "@codegram should give me a t-shirt" do
21
+ @message.message = "% \"@codegram\""
22
+ EM.run do
23
+ @eval.call(@connection, @message)
24
+ eventually(true) { @connection.messages.include? "@codegram" }
25
+ end
26
+ end
27
+
28
+ it "should not eval system method" do
29
+ @message.message = "% system('rm -rf /')"
30
+ EM.run do
31
+ @eval.call(@connection, @message)
32
+ eventually(true) { @connection.messages.include? "Error: Insecure operation - system" }
33
+ end
34
+ end
35
+
36
+ it "should not crash after raise Exception" do
37
+ @message.message = "% raise Exception"
38
+ EM.run do
39
+ @eval.call(@connection, @message)
40
+ eventually(true) { @connection.messages.include? "Error: Exception" }
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+ require 'muzang-plugins/muzang-nerdpursuit'
3
+ require 'json'
4
+
5
+ class NerdPursuit
6
+ def current_question=(other)
7
+ @current_question=other
8
+ end
9
+
10
+ def period(time)
11
+ time / 1000.0
12
+ end
13
+ end
14
+
15
+ describe "NerdPursuit" do
16
+ before(:each) do
17
+ @bot = stub
18
+ @nerdpursuit = NerdPursuit.new(@bot)
19
+ @connection = ConnectionMock.new
20
+ @cq = JSON.parse(File.open("#{File.expand_path("../../lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/matz.json", __FILE__)}").read)["question"]
21
+ @nerdpursuit.current_question = @cq
22
+ @message = OpenStruct.new({ :channel => "#test", :message => "!quiz", :nick => "LTe" })
23
+ end
24
+
25
+ it "should start quiz after !quiz message" do
26
+ @nerdpursuit.call(@connection, @message)
27
+ @nerdpursuit.quiz_time.should == true
28
+ end
29
+
30
+ it "should parse question and start quiz sequence" do
31
+ EM.run do
32
+ @nerdpursuit.call(@connection, @message)
33
+ eventually(true) do
34
+ @connection.messages.include? "Quiz time!" and
35
+ @connection.messages.include? "Category: ruby" and
36
+ @connection.messages.include? "Question: When Matz joined Heruku?" and
37
+ @connection.messages.include? "Answer 1: 12th June 2008" and
38
+ @connection.messages.include? "Answer 2: 12th July 2011" and
39
+ @connection.messages.include? "Answer 3: 12th June 2011" and
40
+ @connection.messages.include? "Answer 4: 12th June 2010"
41
+ end
42
+ end
43
+ end
44
+
45
+ it "should find winner" do
46
+ EM.run do
47
+ @message_lte = @message.dup
48
+ @message_lte.message = "3"
49
+ @nerdpursuit.call(@connection, @message)
50
+ @nerdpursuit.call(@connection, @message_lte)
51
+
52
+ eventually(true) do
53
+ @connection.messages.include? "The winner is... LTe" and
54
+ @connection.messages.include? "Right answer: 3"
55
+ end
56
+ end
57
+ end
58
+
59
+ it "should not allow for many answers" do
60
+ EM.run do
61
+ @nerdpursuit.call(@connection, @message)
62
+ [1,2,3,4].each do |answer|
63
+ @message.message = answer.to_s
64
+ @nerdpursuit.call(@connection, @message)
65
+ end
66
+ @message.message = "3"; @message.nick = "PawelPacana"
67
+ @nerdpursuit.call(@connection, @message)
68
+
69
+ eventually(true) do
70
+ @connection.messages.include? "Right answer: 3" and
71
+ @connection.messages.include? "The winner is... PawelPacana" and
72
+ !@connection.messages.include? "The winner is... LTe"
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+ require 'muzang-plugins/muzang-plusone'
3
+
4
+ describe "PlusOne" do
5
+ before(:each) do
6
+ @bot = stub
7
+ @plusone = PlusOne.new(@bot)
8
+ @plusone.stats = { "LTe" => 1, "ruby" => 1 }
9
+ @connection = stub(:msg => true)
10
+ @message = OpenStruct.new({ :channel => "#test", :message => "LTe: +1 for great irc bot", :nick => "LTe"})
11
+ end
12
+
13
+ it "should not add plus one for myself" do
14
+ @connection.should_receive(:msg).with("#test", "LTe pisze w PHP")
15
+ @plusone.call(@connection, @message)
16
+ @plusone.stats["LTe"].should == 1
17
+ end
18
+
19
+ it "should not allow to add plus one for new user" do
20
+ @message.nick = "new_user"
21
+ @connection.should_receive(:msg).with("#test", "new_user pisze w PHP")
22
+ @plusone.call(@connection, @message)
23
+ @plusone.stats["LTe"].should == 1
24
+ end
25
+
26
+ it "should print stats" do
27
+ @message.message = "!stats"; @message.nick = "LTe"
28
+ @connection.should_receive(:msg).once
29
+ @plusone.call(@connection, @message)
30
+ end
31
+
32
+ [
33
+ "LTe: +1 for great irc bot",
34
+ "LTe +1 for grat bot",
35
+ "LTe +1"
36
+ ].each do |m|
37
+ it "should react on message #{m}" do
38
+ proper_plus_one(m)
39
+ end
40
+ end
41
+
42
+ [
43
+ "LTe: +1",
44
+ "LTe: plus (+1) feature is great",
45
+ "I think +1 is great",
46
+ "LTe: great +1"
47
+ ].each do |m|
48
+ it "should not react on message #{m}" do
49
+ invalid_plus_one(m)
50
+ end
51
+ end
52
+
53
+ end
54
+
55
+ def invalid_plus_one(message)
56
+ @message = OpenStruct.new({ :channel => "#test", :message => message, :nick => "ruby" })
57
+ @connection.should_not_receive(:msg).with("#test", "ruby podarowal +1 dla *LTe*")
58
+ @plusone.call(@connection, @message)
59
+ @plusone.stats["LTe"].should == 1
60
+ end
61
+
62
+ def proper_plus_one(message)
63
+ @message = OpenStruct.new({ :channel => "#test", :message => message, :nick => "ruby" })
64
+ @connection.should_receive(:msg).with("#test", "ruby podarowal +1 dla *LTe*")
65
+ @plusone.call(@connection, @message)
66
+ @plusone.stats["LTe"].should == 2
67
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+ require 'muzang-plugins/muzang-reddit'
3
+
4
+ class Reddit
5
+ def period
6
+ 0.1
7
+ end
8
+ end
9
+
10
+ describe "Reddit" do
11
+ before do
12
+ @bot = stub
13
+ @reddit = Reddit.new(@bot)
14
+ @connection = ConnectionMock.new(:nick => "DRUG-bot")
15
+ @message = OpenStruct.new({ :command => :join, :channel => "#test", :nick => "DRUG-bot" })
16
+ @file = File.expand_path('../support/responses/reddit.response', __FILE__)
17
+ EventMachine::MockHttpRequest.pass_through_requests = false
18
+ EventMachine::MockHttpRequest.register_file('http://www.reddit.com:80/r/ruby/.rss', :get, @file)
19
+ EventMachine::MockHttpRequest.activate!
20
+ end
21
+
22
+ it "should call reddit and print all articles" do
23
+ @reddit.last_update = Time.new 2010
24
+ EM.run do
25
+ @reddit.call(@connection, @message)
26
+ eventually(25) { @connection.message_count }
27
+ end
28
+ end
29
+
30
+ it "should print only one message" do
31
+ @reddit.last_update = Time.new(2011, 9, 29, 0, 47, 0)
32
+ EM.run do
33
+ @reddit.call(@connection, @message)
34
+ eventually(1) { @connection.message_count }
35
+ end
36
+ end
37
+
38
+ it "should not print message" do
39
+ @reddit.last_update = Time.now
40
+ EM.run do
41
+ @reddit.call(@connection, @message)
42
+ eventually(0) { @connection.message_count }
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+ require 'muzang-plugins/muzang-rubygems'
3
+
4
+ class RubyGems
5
+ def period
6
+ 0.1
7
+ end
8
+ end
9
+
10
+ describe "RubyGems" do
11
+ before do
12
+ @bot = stub
13
+ @rubygems = RubyGems.new(@bot)
14
+ @connection = ConnectionMock.new(:nick => "DRUG-bot")
15
+ @message = OpenStruct.new({ :command => :join, :channel => "#test", :nick => "DRUG-bot" })
16
+ @file = File.expand_path('../support/responses/rubygems.response', __FILE__)
17
+ EventMachine::MockHttpRequest.pass_through_requests = false
18
+ EventMachine::MockHttpRequest.register_file('http://rubygems.org:80/api/v1/gems/latest.json', :get, @file)
19
+ EventMachine::MockHttpRequest.activate!
20
+ end
21
+
22
+ it "should print last gem" do
23
+ @rubygems.last_gem = "fake_gem"
24
+ EM.run do
25
+ @rubygems.call(@connection, @message)
26
+ eventually(1) { @connection.message_count }
27
+ end
28
+ end
29
+
30
+ it "should not print last gem" do
31
+ @rubygems.last_gem = "action_links"
32
+ EM.run do
33
+ @rubygems.call(@connection, @message)
34
+ eventually(0) { @connection.message_count }
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,11 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'em-ventually/rspec'
5
+ require 'ostruct'
6
+ require 'muzang-plugins'
7
+
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+ end
@@ -0,0 +1,15 @@
1
+ class ConnectionMock
2
+ attr_accessor :message_count, :messages, :options, :nick
3
+
4
+ def initialize(options = {})
5
+ @message_count = 0
6
+ options.each do |k, v|
7
+ send(:"#{k}=", v)
8
+ end
9
+ end
10
+
11
+ def msg(where, message)
12
+ @message_count += 1
13
+ (@messages ||= []) << message
14
+ end
15
+ end
@@ -0,0 +1,4 @@
1
+ HTTP/1.1 200 OK
2
+ Cache-Control: private
3
+
4
+ {"success":true,"result":{"generatorID":2,"displayName":"Y U No","urlName":"Y-U-No","totalVotesScore":0,"imageUrl":"/cache/images/400x/0/162/166088.jpg","instanceID":10982773,"text0":"hi0","text1":"hi1","instanceImageUrl":"/cache/instances/400x/10/10725/10982773.jpg","instanceUrl":"http://memegenerator.net/instance/10982773"}}
@@ -0,0 +1,3 @@
1
+ HTTP/1.1 200 OK
2
+
3
+ <?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>reddit for ruby hackers</title><link>http://www.reddit.com/r/ruby/</link><description>**A reddit for discussion and news about ruby programming** Ruby-on-Rails posts are encouraged to be posted in the [r/rails](http://reddit.com/r/rails) subreddit ** Learning Ruby? ** * [TryRuby](http://tryruby.org/) in your browser * Syntax, structure, and some common functions and libraries try [RubyKoans](http://rubykoans.com/) * [Hackety Hack](http://hackety-hack.com/) a shoes app for playing around with ruby ** Tools ** * [Ruby Version Manager (RVM)](http://rvm.beginrescueend.com/) easily install, manage and work with multiple ruby environments from interpreters to sets of gems * Manages an application's dependencies [Bundler](http://gembundler.com) * Looking for new gems? [ruby-toolbox](http://ruby-toolbox.com/) ** Got Docs? ** * [APIdock](http://apidock.com/) rich and usable interface for searching, perusing and improving the documentation * [rdoc](http://rdoc.info/gems) YARD Documentation Server * [Ruby Doc](http://ruby-doc.org/) complete and accurate documentation for the Ruby programming language **Books** * [Well Grounded Rubyist](http://www.amazon.com/gp/product/1933988657/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;tag=redditrrubyco-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1933988657) * [Eloquent Ruby](http://www.amazon.com/gp/product/0321584104/ref=as_li_tf_tl?ie=UTF8&amp;tag=redditrrubyco-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321584104) * [Metaprogramming Ruby](http://www.amazon.com/gp/product/1934356476/ref=as_li_tf_tl?ie=UTF8&amp;tag=redditrrubyco-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1934356476) * [The Rspec Book](http://www.amazon.com/gp/product/1934356379/ref=as_li_tf_tl?ie=UTF8&amp;tag=redditrrubyco-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1934356379) * [Programming Ruby 1.9: The Pragmatic Programmers’ Guide](http://www.amazon.com/gp/product/1934356085/ref=as_li_tf_tl?ie=UTF8&amp;tag=redditrrubyco-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1934356085) * [The Ruby Programming Language](http://www.amazon.com/gp/product/0596516177/ref=as_li_tf_tl?ie=UTF8&amp;tag=redditrrubyco-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596516177) ** Community ** * Signup for [Github](http://github.com/signup/free) * Signup for [rubygems](http://rubygems.org/sign_up) ** Screencasts (Rails) ** * [RoR Screencasts](http://rubyonrails.org/screencasts/rails3) * [RailsCast](http://railscasts.com/) * [Rails For Zombies!](http://railsforzombies.org/)</description><image><url>http://thumbs.reddit.com/t5_2qh21.png?v=d4ae33f6d04df1caf7a3b126aabe9ae5</url><title>reddit for ruby hackers</title><link>http://www.reddit.com/r/ruby/</link></image><item><title>(Real) Modern Ruby Development</title><link>http://www.reddit.com/r/ruby/comments/kulnn/real_modern_ruby_development/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/kulnn/real_modern_ruby_development/</guid><pubDate>Wed, 28 Sep 2011 22:48:47 +0000</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/cwgem&#34;&gt; cwgem &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://blog.steveklabnik.com/2011/09/28/real-modern-ruby-development.html&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/kulnn/real_modern_ruby_development/"&gt;[8 komentarzy]&lt;/a&gt;</description></item><item><title>JRuby GA on an Engine Yard Cloud Near You</title><link>http://www.reddit.com/r/ruby/comments/ku3f4/jruby_ga_on_an_engine_yard_cloud_near_you/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/ku3f4/jruby_ga_on_an_engine_yard_cloud_near_you/</guid><pubDate>Wed, 28 Sep 2011 14:17:03 +0000</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/mshe&#34;&gt; mshe &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://www.engineyard.com/blog/2011/jruby-ga-on-an-engine-yard-cloud-near-you/&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/ku3f4/jruby_ga_on_an_engine_yard_cloud_near_you/"&gt;[skomentuj]&lt;/a&gt;</description></item><item><title>Is RSpec, Cucumber, et al Making Testing Too Risky?</title><link>http://www.reddit.com/r/ruby/comments/ku4e2/is_rspec_cucumber_et_al_making_testing_too_risky/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/ku4e2/is_rspec_cucumber_et_al_making_testing_too_risky/</guid><pubDate>Wed, 28 Sep 2011 14:47:17 +0000</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/mentalbrew&#34;&gt; mentalbrew &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://www.mentalbrew.com/blog/2011/09/28/is-rspec-cucumber-making-testing-risky/&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/ku4e2/is_rspec_cucumber_et_al_making_testing_too_risky/"&gt;[5 komentarzy]&lt;/a&gt;</description></item><item><title>Playin' with the ruby GC in 1.9.3</title><link>http://www.reddit.com/r/ruby/comments/ku3hm/playin_with_the_ruby_gc_in_193/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/ku3hm/playin_with_the_ruby_gc_in_193/</guid><pubDate>Wed, 28 Sep 2011 07:19:27 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/rondale_sc&#34;&gt; rondale_sc &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://www.jonathan-jackson.net/playin-with-the-ruby-gc&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/ku3hm/playin_with_the_ruby_gc_in_193/"&gt;[skomentuj]&lt;/a&gt;</description></item><item><title>Modern Rails Setup</title><link>http://www.reddit.com/r/ruby/comments/ktrme/modern_rails_setup/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/ktrme/modern_rails_setup/</guid><pubDate>Tue, 27 Sep 2011 21:42:14 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/roger1981&#34;&gt; roger1981 &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://ascarter.net/2011/09/25/modern-ruby-development.html&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/ktrme/modern_rails_setup/"&gt;[12 komentarzy]&lt;/a&gt;</description></item><item><title>.NET to Ruby: Namespacing, Naming Conventions, Comments &amp; Documentation</title><link>http://www.reddit.com/r/ruby/comments/ku7m3/net_to_ruby_namespacing_naming_conventions/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/ku7m3/net_to_ruby_namespacing_naming_conventions/</guid><pubDate>Wed, 28 Sep 2011 16:24:17 +0000</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/ruprict&#34;&gt; ruprict &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://rubysource.com/net-to-ruby-namespacing-naming-conventions-comments-documentation/&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/ku7m3/net_to_ruby_namespacing_naming_conventions/"&gt;[skomentuj]&lt;/a&gt;</description></item><item><title>Continuous integration &amp; deployment within 1 minute via ruby gem</title><link>http://www.reddit.com/r/ruby/comments/ku7ha/continuous_integration_deployment_within_1_minute/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/ku7ha/continuous_integration_deployment_within_1_minute/</guid><pubDate>Wed, 28 Sep 2011 16:20:12 +0000</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/oBeLx&#34;&gt; oBeLx &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://news.ycombinator.com/item?id=3048602&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/ku7ha/continuous_integration_deployment_within_1_minute/"&gt;[skomentuj]&lt;/a&gt;</description></item><item><title>Practicing Ruby: A weekly journal from Gregory Brown</title><link>http://www.reddit.com/r/ruby/comments/ktnda/practicing_ruby_a_weekly_journal_from_gregory/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/ktnda/practicing_ruby_a_weekly_journal_from_gregory/</guid><pubDate>Tue, 27 Sep 2011 19:26:10 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/sandal&#34;&gt; sandal &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://practicingruby.com&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/ktnda/practicing_ruby_a_weekly_journal_from_gregory/"&gt;[skomentuj]&lt;/a&gt;</description></item><item><title>Looking for Writers (Rubysource.com)</title><link>http://www.reddit.com/r/ruby/comments/kt8pq/looking_for_writers_rubysourcecom/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/kt8pq/looking_for_writers_rubysourcecom/</guid><pubDate>Tue, 27 Sep 2011 19:12:29 +0000</pubDate><description>&lt;!-- SC_OFF --&gt;&lt;div class=&#34;md&#34;&gt;&lt;p&gt;Hullo,&lt;/p&gt; &lt;p&gt;Hullo all, I am the editor of &lt;a href=&#34;http://www.rubysource.com&#34; &gt;Rubysource.com&lt;/a&gt; and we are actively looking for writers for all topics Ruby. I figure that reddit is a great source for technical Ruby minds that want to get involved. This is a pay-per-article agreement, so if you are interested, please contact me at glenn (dot) goodrich (at) rubysource.com. More details &lt;a href=&#34;http://rubysource.com/write-for-us/&#34; &gt;here&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Please put &#34;Write for Rubysource&#34; in the subject line in your e-mail to me.&lt;/p&gt; &lt;p&gt;Thanks, Glenn&lt;/p&gt;&lt;/div&gt;&lt;!-- SC_ON --&gt; submitted by &lt;a href=&#34;http://www.reddit.com/user/ruprict&#34;&gt; ruprict &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://www.reddit.com/r/ruby/comments/kt8pq/looking_for_writers_rubysourcecom/&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/kt8pq/looking_for_writers_rubysourcecom/"&gt;[4 komentarze]&lt;/a&gt;</description></item><item><title>GemStats.org - Help the Ruby community collect stats on library usage in Rails apps</title><link>http://www.reddit.com/r/ruby/comments/kt7fg/gemstatsorg_help_the_ruby_community_collect_stats/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/kt7fg/gemstatsorg_help_the_ruby_community_collect_stats/</guid><pubDate>Tue, 27 Sep 2011 11:37:01 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/bcardarella&#34;&gt; bcardarella &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://gemstats.org&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/kt7fg/gemstatsorg_help_the_ruby_community_collect_stats/"&gt;[skomentuj]&lt;/a&gt;</description></item><item><title>The Death and Rebirth of Practicing Ruby</title><link>http://www.reddit.com/r/ruby/comments/ktmdx/the_death_and_rebirth_of_practicing_ruby/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/ktmdx/the_death_and_rebirth_of_practicing_ruby/</guid><pubDate>Tue, 27 Sep 2011 18:56:57 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/sandal&#34;&gt; sandal &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://blog.rubybestpractices.com/posts/gregory/057-the-practicing-ruby-journal.html&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/ktmdx/the_death_and_rebirth_of_practicing_ruby/"&gt;[skomentuj]&lt;/a&gt;</description></item><item><title>GemStats.org - help the community by sharing your gem data</title><link>http://www.reddit.com/r/ruby/comments/kt7sq/gemstatsorg_help_the_community_by_sharing_your/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/kt7sq/gemstatsorg_help_the_community_by_sharing_your/</guid><pubDate>Tue, 27 Sep 2011 11:47:02 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/cwgem&#34;&gt; cwgem &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://gemstats.org/&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/kt7sq/gemstatsorg_help_the_community_by_sharing_your/"&gt;[skomentuj]&lt;/a&gt;</description></item><item><title>Ruby-doc.org beta</title><link>http://www.reddit.com/r/ruby/comments/ksnx1/rubydocorg_beta/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/ksnx1/rubydocorg_beta/</guid><pubDate>Mon, 26 Sep 2011 22:42:17 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/cwgem&#34;&gt; cwgem &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://www.jamesbritt.com/2011/9/20/ruby-doc-org-beta&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/ksnx1/rubydocorg_beta/"&gt;[4 komentarze]&lt;/a&gt;</description></item><item><title>Learn Ruby The Hard Way</title><link>http://www.reddit.com/r/ruby/comments/ksfsd/learn_ruby_the_hard_way/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/ksfsd/learn_ruby_the_hard_way/</guid><pubDate>Mon, 26 Sep 2011 18:26:04 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/cdwillis&#34;&gt; cdwillis &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://ruby.learncodethehardway.org/book/&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/ksfsd/learn_ruby_the_hard_way/"&gt;[13 komentarzy]&lt;/a&gt;</description></item><item><title>Tutorial: OS X automation with MacRuby and the Scripting Bridge</title><link>http://www.reddit.com/r/ruby/comments/kskfg/tutorial_os_x_automation_with_macruby_and_the/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/kskfg/tutorial_os_x_automation_with_macruby_and_the/</guid><pubDate>Tue, 27 Sep 2011 03:42:35 +0000</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/roger1981&#34;&gt; roger1981 &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://arstechnica.com/apple/guides/2011/09/tutorial-os-x-automation-with-macruby-and-the-scripting-bridge.ars&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/kskfg/tutorial_os_x_automation_with_macruby_and_the/"&gt;[skomentuj]&lt;/a&gt;</description></item><item><title>Unpatched Security Issue in Addressable Gem</title><link>http://www.reddit.com/r/ruby/comments/kskmh/unpatched_security_issue_in_addressable_gem/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/kskmh/unpatched_security_issue_in_addressable_gem/</guid><pubDate>Mon, 26 Sep 2011 20:48:31 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/rubyist9&#34;&gt; rubyist9 &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;https://github.com/sporkmonger/addressable/issues/48&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/kskmh/unpatched_security_issue_in_addressable_gem/"&gt;[3 komentarze]&lt;/a&gt;</description></item><item><title>Clear Channel Radio stream ruby script</title><link>http://www.reddit.com/r/ruby/comments/ksicg/clear_channel_radio_stream_ruby_script/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/ksicg/clear_channel_radio_stream_ruby_script/</guid><pubDate>Mon, 26 Sep 2011 19:41:04 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/hechacker1&#34;&gt; hechacker1 &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://ordorica.org/system/radio/cc_radio_sqlite.rb&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/ksicg/clear_channel_radio_stream_ruby_script/"&gt;[4 komentarze]&lt;/a&gt;</description></item><item><title>Black Magic Rails: default_scope</title><link>http://www.reddit.com/r/ruby/comments/ks6mp/black_magic_rails_default_scope/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/ks6mp/black_magic_rails_default_scope/</guid><pubDate>Mon, 26 Sep 2011 13:46:16 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/renaebair&#34;&gt; renaebair &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://intridea.com/2011/9/26/black-magic-rails-default-scopes&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/ks6mp/black_magic_rails_default_scope/"&gt;[1 komentarz]&lt;/a&gt;</description></item><item><title>SBPP #4: method Cascades</title><link>http://www.reddit.com/r/ruby/comments/krsfs/sbpp_4_method_cascades/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/krsfs/sbpp_4_method_cascades/</guid><pubDate>Mon, 26 Sep 2011 06:21:29 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/cwgem&#34;&gt; cwgem &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://avdi.org/devblog/2011/09/26/sbpp-4-method-cascades/&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/krsfs/sbpp_4_method_cascades/"&gt;[skomentuj]&lt;/a&gt;</description></item><item><title>&quot;What Killed Smalltalk Could Kill Ruby, Too&quot; (RailsConf '09)</title><link>http://www.reddit.com/r/ruby/comments/krk8y/what_killed_smalltalk_could_kill_ruby_too/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/krk8y/what_killed_smalltalk_could_kill_ruby_too/</guid><pubDate>Mon, 26 Sep 2011 05:39:19 +0000</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/emporsteigend&#34;&gt; emporsteigend &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://www.youtube.com/watch?v=YX3iRjKj7C0&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/krk8y/what_killed_smalltalk_could_kill_ruby_too/"&gt;[16 komentarzy]&lt;/a&gt;</description></item><item><title>command_line_google_maps - Lets you download, draw on, and display a google map image in your command line - [GitHub/~80loc]</title><link>http://www.reddit.com/r/ruby/comments/kr91u/command_line_google_maps_lets_you_download_draw/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/kr91u/command_line_google_maps_lets_you_download_draw/</guid><pubDate>Sun, 25 Sep 2011 16:20:54 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/nexe&#34;&gt; nexe &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;https://github.com/pachacamac/command_line_google_maps&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/kr91u/command_line_google_maps_lets_you_download_draw/"&gt;[skomentuj]&lt;/a&gt;</description></item><item><title>Ruby Timeout Woes, Part 2</title><link>http://www.reddit.com/r/ruby/comments/kqtlg/ruby_timeout_woes_part_2/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/kqtlg/ruby_timeout_woes_part_2/</guid><pubDate>Sun, 25 Sep 2011 06:19:12 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/cwgem&#34;&gt; cwgem &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://woss.name/2011/08/30/ruby-timeout-woes-part-2/&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/kqtlg/ruby_timeout_woes_part_2/"&gt;[4 komentarze]&lt;/a&gt;</description></item><item><title>Use the Free Application Namespace in Rails</title><link>http://www.reddit.com/r/ruby/comments/kqyn5/use_the_free_application_namespace_in_rails/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/kqyn5/use_the_free_application_namespace_in_rails/</guid><pubDate>Sun, 25 Sep 2011 10:15:16 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/martin_luder&#34;&gt; martin_luder &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://winterfell.ch/2011/09/use-the-free-application-namespace-in-rails/&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/kqyn5/use_the_free_application_namespace_in_rails/"&gt;[1 komentarz]&lt;/a&gt;</description></item><item><title>MonoTable - NoSQL Data-Store in Ruby</title><link>http://www.reddit.com/r/ruby/comments/kqhcr/monotable_nosql_datastore_in_ruby/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/kqhcr/monotable_nosql_datastore_in_ruby/</guid><pubDate>Sat, 24 Sep 2011 18:07:57 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/cwgem&#34;&gt; cwgem &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://monotable.org/&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/kqhcr/monotable_nosql_datastore_in_ruby/"&gt;[4 komentarze]&lt;/a&gt;</description></item><item><title>The (Sad) State of Concurrency in Ruby 1.9.2</title><link>http://www.reddit.com/r/ruby/comments/kq5ct/the_sad_state_of_concurrency_in_ruby_192/</link><guid isPermaLink="true">http://www.reddit.com/r/ruby/comments/kq5ct/the_sad_state_of_concurrency_in_ruby_192/</guid><pubDate>Sat, 24 Sep 2011 10:15:59 -0700</pubDate><description>submitted by &lt;a href=&#34;http://www.reddit.com/user/cwgem&#34;&gt; cwgem &lt;/a&gt; &lt;br/&gt; &lt;a href=&#34;http://essenceandartifact.blogspot.com/2011/09/sad-state-of-concurrency-in-ruby-192.html&#34;&gt;[link]&lt;/a&gt; &lt;a href="http://www.reddit.com/r/ruby/comments/kq5ct/the_sad_state_of_concurrency_in_ruby_192/"&gt;[7 komentarzy]&lt;/a&gt;</description></item></channel></rss>
@@ -0,0 +1,3 @@
1
+ HTTP/1.1 200 OK
2
+
3
+ [{"dependencies":{"runtime":[],"development":[]},"name":"action_links","downloads":2,"info":"Automatically includes action links (show, edit, destroy) based on the current page and user roles/permissions","version_downloads":2,"version":"0.1.0","homepage_uri":"https://github.com/halloffame/action_links","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/action_links-0.1.0.gem","project_uri":"http://rubygems.org/gems/action_links","authors":"Adam Crownoble, Ryan Hall","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"guard","requirements":"~> 0.7.0"},{"name":"railties","requirements":"~> 3.1.0"}],"development":[{"name":"rake","requirements":">= 0"}]},"name":"omnitool","downloads":1,"info":"Tool for manipulating Omega apps","version_downloads":1,"version":"0.0.2","homepage_uri":"http://git.xspond.com/omega/omnitool","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/omnitool-0.0.2.gem","project_uri":"http://rubygems.org/gems/omnitool","authors":"David Genord II","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[{"name":"rake","requirements":">= 0"},{"name":"rspec","requirements":"~> 2.6"}]},"name":"readingtime","downloads":2,"info":"Estimates reading time of a Ruby String object","version_downloads":2,"version":"0.0.3","homepage_uri":"http://github.com/garethrees/readingtime","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/readingtime-0.0.3.gem","project_uri":"http://rubygems.org/gems/readingtime","authors":"Gareth Rees","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"i18n","requirements":"~> 0.6.0"},{"name":"vagrant","requirements":">= 0.7.0"}],"development":[]},"name":"vagrant-bundler-tools","downloads":3,"info":"vagrant-bundle-tools in a vagrant plugin to make it possible to interact\nwith the guest's bundled gems directory from the host.\n","version_downloads":3,"version":"0.0.1","homepage_uri":"http://github.com/mocoso/vagrant-bundler-tools","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/vagrant-bundler-tools-0.0.1.gem","project_uri":"http://rubygems.org/gems/vagrant-bundler-tools","authors":"Joel Chippindale","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"curb","requirements":">= 0"},{"name":"json","requirements":">= 0"},{"name":"rake","requirements":">= 0"}],"development":[{"name":"bundler","requirements":"~> 1.0.0"},{"name":"jeweler","requirements":"~> 1.6.4"},{"name":"rcov","requirements":">= 0"},{"name":"shoulda","requirements":">= 0"}]},"name":"leftronicapi","downloads":4,"info":"Provides a set of functions to update Leftronic dashboard widgets with custom data. Data is submitted by an HTTP POST request with data encoded in the JSON format.","version_downloads":4,"version":"1.0.0","homepage_uri":"http://github.com/sonofabell/leftronic-ruby","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/leftronicapi-1.0.0.gem","project_uri":"http://rubygems.org/gems/leftronicapi","authors":"Peter Schaadt","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"amqp","requirements":">= 0.8.0"},{"name":"daemons","requirements":"~> 1.1"},{"name":"systemu","requirements":"~> 2.4"}],"development":[]},"name":"traut","downloads":2,"info":"Traut is a configurable daemon for running localhost commands in response to events generated elsewhere. AMQP is used as the interchange. Traut can make application deployments in response to code checkins, automate database failover and anything else that can be scripted. It needs only companions to pump events through the 'traut' exchange.","version_downloads":2,"version":"0.0.1","homepage_uri":"https://github.com/CarePilot/Traut","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/traut-0.0.1.gem","project_uri":"http://rubygems.org/gems/traut","authors":"Brian L. Troutwine","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[]},"name":"gemstats","downloads":3,"info":"Analytics for your Gemfile","version_downloads":3,"version":"0.0.1","homepage_uri":"http://GemStats.org","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/gemstats-0.0.1.gem","project_uri":"http://rubygems.org/gems/gemstats","authors":"Brian Cardarella","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"json","requirements":">= 0"}],"development":[]},"name":"rabbitmqadmin-cli","downloads":4,"info":"Requires rabbitmqadmin to be in your path","version_downloads":4,"version":"1.0.0","homepage_uri":"http://github.com/leemhenson/rabbitmqadmin-cli","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/rabbitmqadmin-cli-1.0.0.gem","project_uri":"http://rubygems.org/gems/rabbitmqadmin-cli","authors":"Lee Henson, Guy Boertje","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"fluent","requirements":"~> 0.9.14"},{"name":"mongo","requirements":"~> 1.2.0"}],"development":[]},"name":"fluent-plugin-mongo","downloads":4,"info":"MongoDB output plugin for Fluent event collector","version_downloads":4,"version":"0.1.0","homepage_uri":"http://github.com/fluent","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/fluent-plugin-mongo-0.1.0.gem","project_uri":"http://rubygems.org/gems/fluent-plugin-mongo","authors":"Masahiro Nakagawa","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"akami","requirements":"~> 1.0"},{"name":"builder","requirements":">= 2.1.2"},{"name":"gyoku","requirements":">= 0.4.0"},{"name":"httpi","requirements":"~> 0.9"},{"name":"nokogiri","requirements":">= 1.4.0"},{"name":"nori","requirements":"~> 1.0"},{"name":"wasabi","requirements":"~> 2.0"}],"development":[{"name":"mocha","requirements":"~> 0.9.8"},{"name":"rake","requirements":"~> 0.8.7"},{"name":"rspec","requirements":"~> 2.5.0"},{"name":"timecop","requirements":"~> 0.3.5"}]},"name":"they-savon","downloads":6,"info":"Ruby's heavy metal SOAP client","version_downloads":6,"version":"0.9.7","homepage_uri":"http://savonrb.com","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/they-savon-0.9.7.gem","project_uri":"http://rubygems.org/gems/they-savon","authors":"Daniel Harrington","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"nokogiri","requirements":">= 0"},{"name":"nokogiri","requirements":">= 0"},{"name":"oauth","requirements":">= 0"},{"name":"oauth","requirements":">= 0"},{"name":"twitter_oauth","requirements":">= 0"},{"name":"twitter_oauth","requirements":">= 0"}],"development":[{"name":"bundler","requirements":"~> 1.0.0"},{"name":"jeweler","requirements":"~> 1.6.4"},{"name":"rcov","requirements":">= 0"},{"name":"shoulda","requirements":">= 0"}]},"name":"twitter-avatar-update","downloads":5,"info":"Updates your Twitter avatar to a random user-created avatar from http://eightshit.me","version_downloads":5,"version":"0.1.0","homepage_uri":"http://github.com/ip2k/twitter-avatar-update","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/twitter-avatar-update-0.1.0.gem","project_uri":"http://rubygems.org/gems/twitter-avatar-update","authors":"ip2k","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"cobravsmongoose","requirements":">= 0.0.2"},{"name":"json","requirements":">= 1.6.1"}],"development":[{"name":"bacon","requirements":">= 1.1.0"}]},"name":"jimmy_hat","downloads":5,"info":"Quick-and-easy XML-to-JSON con-ver-sion.","version_downloads":5,"version":"1.0.0","homepage_uri":"http://github.com/ymendel/jimmy_hat/","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/jimmy_hat-1.0.0.gem","project_uri":"http://rubygems.org/gems/jimmy_hat","authors":"Yossef Mendelssohn","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"ruby-processing","requirements":">= 0"}],"development":[]},"name":"wordcram","downloads":7,"info":"A wrapper for the WordCram java library","version_downloads":7,"version":"1.0.0","homepage_uri":"https://github.com/Nerian/s9-e1","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/wordcram-1.0.0.gem","project_uri":"http://rubygems.org/gems/wordcram","authors":"Gonzalo Rodriguez-Baltanas Diaz","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[]},"name":"simplexls","downloads":7,"info":"Simple XLS","version_downloads":7,"version":"0.1.5","homepage_uri":"http://github.com/mikeycgto/simple-xls","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/simplexls-0.1.5.gem","project_uri":"http://rubygems.org/gems/simplexls","authors":"mikeycgto","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"json","requirements":"> 1.0.0"}],"development":[]},"name":"apple-push","downloads":6,"info":"ApplePush is a very simple implementation of the APNS (Apple Push Notification Service) protocol. It differs from the APNS gem by being able to push to different iOS apps from the same Ruby application.","version_downloads":6,"version":"0.1.0","homepage_uri":"http://github.com/sutajio/apple-push/","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/apple-push-0.1.0.gem","project_uri":"http://rubygems.org/gems/apple-push","authors":"Niklas Holmgren","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[{"name":"hanna","requirements":">= 0"},{"name":"rspec","requirements":"~> 1.1"}]},"name":"sunspot_solr-xaop","downloads":6,"info":" Sunspot::Solr provides a bundled Solr distribution for use with Sunspot.\n Typical deployment environments will require more configuration, but this\n distribution is well suited to development and testing.\n","version_downloads":6,"version":"1.2.1","homepage_uri":"https://github.com/outoftime/sunspot/tree/master/sunspot_solr","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/sunspot_solr-xaop-1.2.1.gem","project_uri":"http://rubygems.org/gems/sunspot_solr-xaop","authors":"Mat Brown, Peer Allan, Dmitriy Dzema, Benjamin Krause, Marcel de Graaf, Brandon Keepers, Peter Berkenbosch, Brian Atkinson, Tom Coleman, Matt Mitchell, Nathan Beyer, Kieran Topping, Nicolas Braem, Jeremy Ashkenas, Dylan Vaughn, Brian Durand, Sam Granieri, Nick Zadrozny, Jason Ronallo","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"activesupport","requirements":"~> 3.1"},{"name":"i18n","requirements":">= 0"},{"name":"thor","requirements":">= 0"}],"development":[{"name":"bundler","requirements":"~> 1.0.0"},{"name":"jeweler","requirements":"~> 1.6.4"},{"name":"rcov","requirements":">= 0"},{"name":"rspec","requirements":"~> 2.3.0"},{"name":"yard","requirements":"~> 0.6.0"}]},"name":"soybean","downloads":7,"info":"Generate soap web-services from you wsdl. Generate: all classes from xsd, and other.","version_downloads":7,"version":"1.0.0","homepage_uri":"http://github.com/webgago/soybean","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/soybean-1.0.0.gem","project_uri":"http://rubygems.org/gems/soybean","authors":"Anton Sozontov","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"aws-sdk","requirements":"~> 1.1.3"},{"name":"fluent","requirements":"~> 0.9.14"}],"development":[]},"name":"fluent-plugin-s3","downloads":11,"info":"Amazon S3 output plugin for Fluent event collector","version_downloads":11,"version":"0.1.1","homepage_uri":"http://fluent.github.com/","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/fluent-plugin-s3-0.1.1.gem","project_uri":"http://rubygems.org/gems/fluent-plugin-s3","authors":"Sadayuki Furuhashi","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"bicho","requirements":"~> 0.0.2"},{"name":"nokogiri","requirements":"~> 1.4"}],"development":[]},"name":"dm-bugzilla-adapter","downloads":10,"info":"Use it in Ruby applications to access Bugzilla","version_downloads":10,"version":"0.0.1","homepage_uri":"","bug_tracker_uri":"https://github.com/openSUSE/dm-bugzilla-adapter/issues","source_code_uri":"https://github.com/openSUSE/dm-bugzilla-adapter","gem_uri":"http://rubygems.org/gems/dm-bugzilla-adapter-0.0.1.gem","project_uri":"http://rubygems.org/gems/dm-bugzilla-adapter","authors":"Klaus K\u00e4mpf","mailing_list_uri":"","documentation_uri":"","wiki_uri":""},{"dependencies":{"runtime":[{"name":"cucumber","requirements":">= 1.0.0"},{"name":"rspec","requirements":">= 2.6.0"},{"name":"sys-uname","requirements":">= 0"},{"name":"thor","requirements":">= 0.14.6"}],"development":[{"name":"aruba","requirements":">= 0"}]},"name":"testgen","downloads":8,"info":"A collection of generators build things for testers using Cucumber","version_downloads":8,"version":"0.1","homepage_uri":"http://github.com/cheezy/testgen","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/testgen-0.1.gem","project_uri":"http://rubygems.org/gems/testgen","authors":"Jeffrey S. Morgan","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"rails","requirements":"= 3.0.10"}],"development":[{"name":"activerecord","requirements":"= 3.0.10"},{"name":"database_cleaner","requirements":">= 0"},{"name":"rake","requirements":">= 0"},{"name":"rcov","requirements":">= 0"},{"name":"rdoc","requirements":">= 0"},{"name":"rr","requirements":">= 0"},{"name":"rspec","requirements":">= 0"},{"name":"sqlite3","requirements":">= 0"}]},"name":"record-cache","downloads":10,"info":"Record Cache for Rails 3","version_downloads":10,"version":"0.1.0","homepage_uri":"https://github.com/orslumen/record-cache","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/record-cache-0.1.0.gem","project_uri":"http://rubygems.org/gems/record-cache","authors":"Orslumen","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[]},"name":"dm-is-tsearchable","downloads":12,"info":"A Datamapper plugin that provides simple TSearch functionality for your Resources","version_downloads":12,"version":"0.1.0","homepage_uri":"http://github.com/coffex/dm-is-tsearchable","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/dm-is-tsearchable-0.1.0.gem","project_uri":"http://rubygems.org/gems/dm-is-tsearchable","authors":"Ryan Whiteley","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"net-scp","requirements":">= 0"},{"name":"net-ssh","requirements":">= 0"},{"name":"Perfecter","requirements":">= 0"},{"name":"term-ansicolor","requirements":">= 0"}],"development":[{"name":"bacon","requirements":">= 0"},{"name":"bundler","requirements":"~> 1.0.0"},{"name":"Colored_Bacon","requirements":">= 0"},{"name":"Gem_Raker_da99","requirements":">= 0"},{"name":"jeweler","requirements":"~> 1.6.4"},{"name":"rcov","requirements":">= 0"}]},"name":"OSer","downloads":11,"info":"\n Various classes to synchronize files (local <-> remote)\n and manipulate them. Also, you can send commands to local\n and remote machines.\n \\ ","version_downloads":11,"version":"0.1.0","homepage_uri":"http://github.com/da01/OSer","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/OSer-0.1.0.gem","project_uri":"http://rubygems.org/gems/OSer","authors":"da99","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"ruby-fsevent","requirements":">= 0"}],"development":[]},"name":"fs-watch","downloads":13,"info":" Script to watch files and directories for changes and execute a command. (OSX Only)\n Similar to dnotify from linux.\n Usage: \n $ fs-watch [dirsToWatch...] \"echo 'execute me when something happens'\"\n","version_downloads":13,"version":"0.2","homepage_uri":"http://johannes.wagener.cc","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/fs-watch-0.2.gem","project_uri":"http://rubygems.org/gems/fs-watch","authors":"Johannes Wagener","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"activesupport","requirements":">= 3.0.0"}],"development":[{"name":"rspec","requirements":">= 2.6.0"}]},"name":"query_string_interface","downloads":14,"info":"This gem extracts params given as a hash to structured data, that can be used when creating queries","version_downloads":14,"version":"0.1.0","homepage_uri":"","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/query_string_interface-0.1.0.gem","project_uri":"http://rubygems.org/gems/query_string_interface","authors":"Vicente Mundim","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"cancan","requirements":">= 1.6.0"},{"name":"sinatra","requirements":">= 1.0.0"}],"development":[{"name":"jeweler","requirements":">= 0"},{"name":"rack-test","requirements":">= 0"},{"name":"rcov","requirements":">= 0"},{"name":"rspec","requirements":">= 0"}]},"name":"sinatra-can","downloads":11,"info":"CanCan wrapper for Sinatra.","version_downloads":11,"version":"0.1.0","homepage_uri":"http://github.com/shf/sinatra-can","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/sinatra-can-0.1.0.gem","project_uri":"http://rubygems.org/gems/sinatra-can","authors":"Silvio Henrique Ferreira","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"pusher","requirements":"~> 0.8.3"},{"name":"showoff","requirements":"~> 0.7.0"}],"development":[]},"name":"showoff-pusher","downloads":11,"info":"Use Pusher to drive your Showoff presentations on remote machines.","version_downloads":11,"version":"0.0.1","homepage_uri":"http://github.com/bgentry/showoff-pusher","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/showoff-pusher-0.0.1.gem","project_uri":"http://rubygems.org/gems/showoff-pusher","authors":"Blake Gentry, Larry Marburger","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[]},"name":"itm","downloads":16,"info":"A ruby interface for SPLAT! the RF Signal Propogation, Loss, and Terrain analysis tool.","version_downloads":16,"version":"0.0.0","homepage_uri":"http://example.com","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/itm-0.0.0.gem","project_uri":"http://rubygems.org/gems/itm","authors":"Paul Swagerty","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"activerecord","requirements":"~> 3.1.0"},{"name":"mysql2","requirements":"~> 0.3"}],"development":[]},"name":"activerecord-mysql2-retry-ext","downloads":18,"info":"\n Something with the combination of Rails 3.1, Mysql2 0.3.x, Capybara,\n Selenium/Webkit/etc causes Mysql to raise exceptions where the connection is\n waiting on a result. This gem provides an auto-retry capability with the\n Mysql2Adapter to retry any query execution up to 5 times. This is a a temporary\n solution until the real issue with the above libraries/frameworks are resolved. This\n should NOT be used in production. \n ","version_downloads":18,"version":"0.1.0","homepage_uri":"https://github.com/zdennis/activerecord-mysql2-retry-ext","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/activerecord-mysql2-retry-ext-0.1.0.gem","project_uri":"http://rubygems.org/gems/activerecord-mysql2-retry-ext","authors":"Zach Dennis","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"amqp","requirements":"= 0.6.7"},{"name":"eventmachine","requirements":"~> 0.12.10"},{"name":"json","requirements":">= 1.4.4, <= 1.4.6"},{"name":"msgpack","requirements":"= 0.4.4"},{"name":"right_popen","requirements":"~> 1.0.11"},{"name":"right_support","requirements":">= 0"}],"development":[]},"name":"right_agent","downloads":27,"info":" RightAgent provides a foundation for running an agent on a server to interface\n in a secure fashion with other agents in the RightScale system. A RightAgent\n uses RabbitMQ as the message bus and the RightScale mapper as the routing node.\n Servers running a RightAgent establish a queue on startup for receiving packets\n routed to it via the mapper. The packets are structured to invoke services in\n the agent represented by actors and methods. The RightAgent may respond to these\n requests with a result packet that the mapper then routes to the originator.\n Similarly a RightAgent can also make requests of other RightAgents in the\n","version_downloads":27,"version":"0.5.1","homepage_uri":"https://github.com/rightscale/right_agent","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/right_agent-0.5.1.gem","project_uri":"http://rubygems.org/gems/right_agent","authors":"Lee Kirchhoff, Raphael Simon, Tony Spataro","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"activesupport","requirements":">= 2.3.11"},{"name":"active_utils","requirements":">= 1.0.1"},{"name":"braintree","requirements":">= 2.0.0"},{"name":"builder","requirements":">= 2.0.0"},{"name":"i18n","requirements":">= 0"},{"name":"money","requirements":">= 0"}],"development":[{"name":"mocha","requirements":">= 0"},{"name":"rails","requirements":">= 2.3.11"},{"name":"rake","requirements":">= 0"}]},"name":"fishman-activemerchant","downloads":19,"info":"Active Merchant is a simple payment abstraction library used in and sponsored by Shopify. It is written by Tobias Luetke, Cody Fauser, and contributors. The aim of the project is to feel natural to Ruby users and to abstract as many parts as possible away from the user to offer a consistent interface across all supported gateways.","version_downloads":19,"version":"1.18.0","homepage_uri":"http://activemerchant.org/","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/fishman-activemerchant-1.18.0.gem","project_uri":"http://rubygems.org/gems/fishman-activemerchant","authors":"Tobias Luetke","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[{"name":"HeSYINUvSBZfxqA-capistrano","requirements":">= 2.3.0"}]},"name":"HeSYINUvSBZfxqA-capistrano_colors","downloads":20,"info":"Simple gem to display colors in capistrano output.","version_downloads":20,"version":"0.5.5","homepage_uri":"http://github.com/stjernstrom/capistrano_colors","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/HeSYINUvSBZfxqA-capistrano_colors-0.5.5.gem","project_uri":"http://rubygems.org/gems/HeSYINUvSBZfxqA-capistrano_colors","authors":"Mathias Stjernstrom","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"HeSYINUvSBZfxqA-capistrano","requirements":">= 2.5.14"}],"development":[]},"name":"HeSYINUvSBZfxqA-capistrano_log","downloads":19,"info":"logging callbacks for capistrano","version_downloads":19,"version":"0.0.2","homepage_uri":"http://github.com/jnewland/capistrano-log_with_awesome","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/HeSYINUvSBZfxqA-capistrano_log-0.0.2.gem","project_uri":"http://rubygems.org/gems/HeSYINUvSBZfxqA-capistrano_log","authors":"Jesse Newland","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"highline","requirements":">= 0"},{"name":"net-scp","requirements":">= 1.0.0"},{"name":"net-sftp","requirements":">= 2.0.0"},{"name":"net-ssh","requirements":">= 2.0.14"},{"name":"net-ssh-gateway","requirements":">= 1.0.0"}],"development":[{"name":"mocha","requirements":">= 0"}]},"name":"HeSYINUvSBZfxqA-capistrano","downloads":19,"info":"Capistrano is a utility and framework for executing commands in parallel on multiple remote machines, via SSH.","version_downloads":19,"version":"2.5.21","homepage_uri":"http://github.com/capistrano/capistrano","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/HeSYINUvSBZfxqA-capistrano-2.5.21.gem","project_uri":"http://rubygems.org/gems/HeSYINUvSBZfxqA-capistrano","authors":"Jamis Buck, Lee Hambley","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[{"name":"bundler","requirements":"~> 1.0.0"},{"name":"jeweler","requirements":"~> 1.6.4"},{"name":"rcov","requirements":">= 0"},{"name":"reek","requirements":"~> 1.2.8"},{"name":"shoulda","requirements":">= 0"},{"name":"yard","requirements":"~> 0.6.0"}]},"name":"twisted","downloads":15,"info":"Another twitter bot for massfollowing","version_downloads":15,"version":"0.0.0","homepage_uri":"http://github.com/greyblake/twisted","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/twisted-0.0.0.gem","project_uri":"http://rubygems.org/gems/twisted","authors":"Potapov Sergey","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[{"name":"rspec","requirements":">= 0"}]},"name":"Shopsense","downloads":16,"info":"Shopsense ruby API","version_downloads":16,"version":"0.1.0","homepage_uri":"http://yoursite.example.com","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/Shopsense-0.1.0.gem","project_uri":"http://rubygems.org/gems/Shopsense","authors":"Wagied Davids","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[{"name":"rspec","requirements":">= 0"}]},"name":"hash_to_object","downloads":17,"info":"Converts json-like hashes into ruby objects.","version_downloads":17,"version":"0.1.0","homepage_uri":"https://github.com/philbirt/hash_to_object","bug_tracker_uri":"","source_code_uri":"","gem_uri":"http://rubygems.org/gems/hash_to_object-0.1.0.gem","project_uri":"http://rubygems.org/gems/hash_to_object","authors":"Phillip Birtcher","mailing_list_uri":"","documentation_uri":"https://github.com/philbirt/hash_to_object","wiki_uri":""},{"dependencies":{"runtime":[{"name":"acts_as_list","requirements":">= 0"},{"name":"ckeditor","requirements":">= 0"},{"name":"dragonfly","requirements":">= 0"},{"name":"faker","requirements":">= 0"},{"name":"inherited_resources","requirements":">= 0"},{"name":"jquery-rails","requirements":">= 0"},{"name":"nested_set","requirements":">= 0"},{"name":"paperclip","requirements":">= 0"},{"name":"rails","requirements":"~> 3.0"},{"name":"sanitize","requirements":">= 0"},{"name":"simple_form","requirements":">= 0"}],"development":[{"name":"mysql2","requirements":">= 0"},{"name":"sqlite3","requirements":">= 0"}]},"name":"qwerty","downloads":4,"info":"The core functionality on which to build a fully featured Content Management System using Rails 3","version_downloads":4,"version":"0.0.1.pre","homepage_uri":"https://github.com/krisleech/qwerty","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/qwerty-0.0.1.pre.gem","project_uri":"http://rubygems.org/gems/qwerty","authors":"Kris Leech","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[{"name":"rake-compiler","requirements":">= 0"},{"name":"rspec","requirements":">= 0"}]},"name":"bcrypt-ruby-maglev-","downloads":17,"info":" bcrypt() is a sophisticated and secure hash algorithm designed by The OpenBSD project\n for hashing passwords. bcrypt-ruby provides a simple, humane wrapper for safely handling\n passwords.\n","version_downloads":17,"version":"3.0.1","homepage_uri":"http://bcrypt-ruby.rubyforge.org","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/bcrypt-ruby-maglev--3.0.1.gem","project_uri":"http://rubygems.org/gems/bcrypt-ruby-maglev-","authors":"Coda Hale","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"actionpack","requirements":"~> 2"},{"name":"activerecord","requirements":"~> 2"},{"name":"activeresource","requirements":"~> 2"},{"name":"activesupport","requirements":"~> 2"},{"name":"rails","requirements":"~> 2"}],"development":[]},"name":"ccls-common_lib","downloads":15,"info":"CCLS Common Lib gem","version_downloads":15,"version":"0.0.0","homepage_uri":"http://github.com/ccls/common_lib","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/ccls-common_lib-0.0.0.gem","project_uri":"http://rubygems.org/gems/ccls-common_lib","authors":"George 'Jake' Wendt","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[]},"name":"friendly_test_names","downloads":16,"info":"This tiny extension for test/unit allows you to write \"test 'has cheeseburger' do; ...; end\" instead of \"def test_has_cheeseburger; ...; end\". Nothing more.","version_downloads":16,"version":"0.1","homepage_uri":null,"bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/friendly_test_names-0.1.gem","project_uri":"http://rubygems.org/gems/friendly_test_names","authors":"Adam Cig\u00e1nek","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[{"name":"jeweler","requirements":"~> 1.6.4"}]},"name":"file_column","downloads":17,"info":"file upload and rmagick image resizing","version_downloads":17,"version":"0.3.2","homepage_uri":"http://github.com/tekin/file_column","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/file_column-0.3.2.gem","project_uri":"http://rubygems.org/gems/file_column","authors":"Sebastian Kanthak","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[]},"name":"refinerycms-stylesheets","downloads":15,"info":"Ruby on Rails Stylesheets engine for Refinery CMS","version_downloads":15,"version":"1.0.2","homepage_uri":null,"bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/refinerycms-stylesheets-1.0.2.gem","project_uri":"http://rubygems.org/gems/refinerycms-stylesheets","authors":"Trevor Jones","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[]},"name":"refinerycms-javascripts","downloads":14,"info":"Ruby on Rails Javascripts engine for Refinery CMS","version_downloads":14,"version":"1.0.1","homepage_uri":null,"bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/refinerycms-javascripts-1.0.1.gem","project_uri":"http://rubygems.org/gems/refinerycms-javascripts","authors":"Trevor Jones","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"json","requirements":">= 0"},{"name":"oauth","requirements":"~> 0.4.0"}],"development":[]},"name":"shelbytv","downloads":15,"info":"A Shelby.tv API wrapper","version_downloads":15,"version":"0.0.1","homepage_uri":"https://github.com/bdotdub/shelbytv","bug_tracker_uri":"","source_code_uri":"http://github.com/bdotdub/shelbytv","gem_uri":"http://rubygems.org/gems/shelbytv-0.0.1.gem","project_uri":"http://rubygems.org/gems/shelbytv","authors":"Benny Wong","mailing_list_uri":"","documentation_uri":"","wiki_uri":""},{"dependencies":{"runtime":[{"name":"rails","requirements":"~> 3.1.0"}],"development":[{"name":"bundler","requirements":"~> 1.0.0"},{"name":"jeweler","requirements":"~> 1.6.4"},{"name":"mocha","requirements":">= 0"},{"name":"rcov","requirements":">= 0"},{"name":"shoulda","requirements":">= 0"},{"name":"sqlite3","requirements":">= 0"}]},"name":"stepper","downloads":18,"info":"Stepper offers the ability to build multistep form with different validations for each step.","version_downloads":18,"version":"0.0.5","homepage_uri":"http://github.com/anton.versal/stepper","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/stepper-0.0.5.gem","project_uri":"http://rubygems.org/gems/stepper","authors":"Anton Versal","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"activerecord","requirements":">= 3"}],"development":[]},"name":"mini_record-compat","downloads":19,"info":"\nWith it you can add the ability to create columns outside the default schema, directly\nin your model in a similar way that you just know in others projects\nlike \\ DataMapper or MongoMapper.\n ","version_downloads":19,"version":"0.2.1","homepage_uri":"https://github.com/seamusabshere/mini_record","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/mini_record-compat-0.2.1.gem","project_uri":"http://rubygems.org/gems/mini_record-compat","authors":"Davide D'Agostino, Seamus Abshere","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"rails","requirements":"~> 3.1.0"}],"development":[]},"name":"swfobject-rails","downloads":17,"info":"This gem integrates swfobject with the Rails 3.1 asset pipeline.","version_downloads":17,"version":"1.0.0","homepage_uri":"https://github.com/gucki/swfobject-rails","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/swfobject-rails-1.0.0.gem","project_uri":"http://rubygems.org/gems/swfobject-rails","authors":"Corin Langosch","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[],"development":[{"name":"bundler","requirements":"~> 1.0.0"},{"name":"jeweler","requirements":"~> 1.6.4"},{"name":"rcov","requirements":">= 0"},{"name":"rspec","requirements":"~> 2.3.0"},{"name":"shoulda","requirements":">= 0"}]},"name":"daemon","downloads":21,"info":"Make calling script to become a daemon with pid file locking support and stdout/stderr redirection","version_downloads":21,"version":"1.0.0","homepage_uri":"http://github.com/jpastuszek/daemon","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/daemon-1.0.0.gem","project_uri":"http://rubygems.org/gems/daemon","authors":"Jakub Pastuszek","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null},{"dependencies":{"runtime":[{"name":"addressable","requirements":">= 0"}],"development":[]},"name":"f1sherman-domainatrix","downloads":16,"info":"A cruel mistress that uses the public suffix domain list to dominate URLs by canonicalizing, finding the public suffix, and breaking them into their domain parts.","version_downloads":16,"version":"0.0.10","homepage_uri":"http://github.com/pauldix/domainatrix","bug_tracker_uri":null,"source_code_uri":null,"gem_uri":"http://rubygems.org/gems/f1sherman-domainatrix-0.0.10.gem","project_uri":"http://rubygems.org/gems/f1sherman-domainatrix","authors":"Paul Dix","mailing_list_uri":null,"documentation_uri":null,"wiki_uri":null}]
metadata ADDED
@@ -0,0 +1,259 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: muzang-plugins
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Piotr Niełacny
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-11-15 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: em-http-request
16
+ requirement: &69975752946020 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *69975752946020
25
+ - !ruby/object:Gem::Dependency
26
+ name: muzang
27
+ requirement: &69975752945340 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *69975752945340
36
+ - !ruby/object:Gem::Dependency
37
+ name: em-ventually
38
+ requirement: &69975752944420 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 0.1.2
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *69975752944420
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: &69975752943780 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 2.6.0
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *69975752943780
58
+ description: Plugins for Muzang IRC bot
59
+ email:
60
+ - piotr.nielacny@gmail.com
61
+ executables: []
62
+ extensions: []
63
+ extra_rdoc_files: []
64
+ files:
65
+ - .gitignore
66
+ - Gemfile
67
+ - Rakefile
68
+ - lib/muzang-plugins.rb
69
+ - lib/muzang-plugins/helpers.rb
70
+ - lib/muzang-plugins/muzang-eval.rb
71
+ - lib/muzang-plugins/muzang-livereload.rb
72
+ - lib/muzang-plugins/muzang-meme.rb
73
+ - lib/muzang-plugins/muzang-motd.rb
74
+ - lib/muzang-plugins/muzang-nerdpursuit.rb
75
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/algorithms/fastes_sorting_algorithm.json
76
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/algorithms/run_time_of_bst.json
77
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/bash/last_cmd_sub.json
78
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/bash/last_directory.json
79
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/bash/prefix_last_command.json
80
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/couchdb/new_database.json
81
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/css/attribute_selectors.json
82
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/css/background_image.json
83
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/css/float_left.json
84
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/css/hexadecimal_code.json
85
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/css/how_do_you_use_multiple_box_sha.json
86
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/css/media.json
87
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/css/position_fixed_support.json
88
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/css/position_property.json
89
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/css/release_date.json
90
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/css/roses.json
91
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/css/z-index_property.json
92
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/all_ur_base.json
93
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/answer_to_everything.json
94
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/club_mate_caffeine.json
95
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/ook_ook.json
96
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/prediction_gates.json
97
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/the_cake.json
98
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/to_which_year_marty_mcfly_wants.json
99
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/what_is_a_traditional_vulcan_sa.json
100
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/what_is_the_c_base.json
101
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/when_life_gives_you_lemons.json
102
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/where_are_the_characters_of_daw.json
103
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/which_character_in_star_trek_se.json
104
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/who_is_the_first_character_to_b.json
105
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/culture/yo_dawg.json
106
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/data/half_a_byte.json
107
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/flash/fps.json
108
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/flash/trace_something_in_as3.json
109
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/grafix/png.json
110
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/grafix/ps_save_for_web.json
111
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/grafix/screen_image_resolution.json
112
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/html/how_do_you_specify_html5_doctyp.json
113
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/html/img_tag.json
114
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/html/optional_html_tags.json
115
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/html/strict_doctype.json
116
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/http/HTCPCP.json
117
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/chrome_v8.json
118
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/fun_with_brackets.json
119
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/how_can_you_access_the_data_pas.json
120
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/jquery_sizzle.json
121
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/json.json
122
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/jsonp.json
123
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/nodetype_of_text_node.json
124
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/same_origin_policy.json
125
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/string_object_coercion_internals.json
126
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/typeof_arguments.json
127
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/valid_function_expression.json
128
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/what_s_4_2.json
129
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/what_s_typeof_null.json
130
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/javascript/who_created_jquery.json
131
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/php/invited-php.json
132
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/python/square_numbers_in_list.json
133
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/rails/controller_action.json
134
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/rails/folders.json
135
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/rails/pluralize_person.json
136
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/rails/rails_first_shown.json
137
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/rails/rails_inventor.json
138
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/rails/rake_about.json
139
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/rails/simple_format.json
140
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/regex/emails.json
141
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/regex/lazy.json
142
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/regex/min_max_quantifier.json
143
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/regex/negative_look_ahead.json
144
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/regex/prime.json
145
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/2_seconds.json
146
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/about_ruby.json
147
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/absolute_superclass_1.8.json
148
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/absolute_superclass_1.9.json
149
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/active_record_base.json
150
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_all_but_the_first.json
151
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_all_but_the_first_and_last
152
+ .json
153
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_all_but_the_last.json
154
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_ampersand.json
155
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_get_and remove_first_element.json
156
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_get_and remove_last_element.json
157
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_pipe.json
158
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_splat.json
159
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/array_to_csv_string.json
160
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/backticks_in_ruby.json
161
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/base_object.json
162
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/best_language.json
163
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/bitwise_and.json
164
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/bitwise_or.json
165
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/class_inheritance.json
166
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/collect_alternative.json
167
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/comparsion.json
168
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/constants.json
169
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/date_format_month.json
170
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/divmod.json
171
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/enumerable.json
172
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/equality.json
173
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/falsy.json
174
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/fizzbuzz.json
175
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/garbarge_collector_in_19.json
176
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/global_variable_character.json
177
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/hash_with_indifferent_access.json
178
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/how_is_ruby_licensed.json
179
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/how_many_gems.json
180
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/instance_exec.json
181
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/kanji_converter.json
182
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/kernel-sprintf-2.json
183
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/kernel-sprintf.json
184
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/kernel.json
185
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/matz.json
186
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/method_used_for_comparisions.json
187
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/mixins_are_what.json
188
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/new_lambda_calling_syntax.json
189
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/new_lambda_constructing_syntax.json
190
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/nil.json
191
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/nil_id.json
192
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/nilclass.json
193
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/numeric_types.json
194
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/private_method_in_ruby.json
195
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/protected_method_in_ruby.json
196
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/quo.json
197
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/ranges_three_dots.json
198
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/return_value_or.json
199
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/rspec_controller_render_views.json
200
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/spaceship_operator.json
201
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/string_clean_whitespace.json
202
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/sum_things_up.json
203
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/symbol_identity_01.json
204
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/symbol_identity_02.json
205
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/symbol_identity_03.json
206
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/symbol_string_ids.json
207
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/symbols.json
208
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/the_difference_between_and_operators.json
209
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/unless_wtf.json
210
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/weakref.json
211
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/what_did_matz_say_about_ruby.json
212
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/what_do_array.json
213
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/what_do_string.json
214
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/what_does_gil_stands_for.json
215
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/what_does_negate_regexp_operator_do.json
216
+ - lib/muzang-plugins/muzang-nerdpursuit/questions/ruby/what_is_a_mixin.json
217
+ - lib/muzang-plugins/muzang-plusone.rb
218
+ - lib/muzang-plugins/muzang-reddit.rb
219
+ - lib/muzang-plugins/muzang-rubygems.rb
220
+ - lib/muzang-plugins/version.rb
221
+ - muzang-plugins.gemspec
222
+ - spec/livereload_spec.rb
223
+ - spec/meme_spec.rb
224
+ - spec/motd_spec.rb
225
+ - spec/muzang-eval_spec.rb
226
+ - spec/nerdpursuit_spec.rb
227
+ - spec/plusone_spec.rb
228
+ - spec/reddit_spec.rb
229
+ - spec/rubygems_spec.rb
230
+ - spec/spec_helper.rb
231
+ - spec/support/connection_mock.rb
232
+ - spec/support/responses/meme.response
233
+ - spec/support/responses/reddit.response
234
+ - spec/support/responses/rubygems.response
235
+ homepage: ''
236
+ licenses: []
237
+ post_install_message:
238
+ rdoc_options: []
239
+ require_paths:
240
+ - lib
241
+ required_ruby_version: !ruby/object:Gem::Requirement
242
+ none: false
243
+ requirements:
244
+ - - ! '>='
245
+ - !ruby/object:Gem::Version
246
+ version: '0'
247
+ required_rubygems_version: !ruby/object:Gem::Requirement
248
+ none: false
249
+ requirements:
250
+ - - ! '>='
251
+ - !ruby/object:Gem::Version
252
+ version: '0'
253
+ requirements: []
254
+ rubyforge_project:
255
+ rubygems_version: 1.8.10
256
+ signing_key:
257
+ specification_version: 3
258
+ summary: Basic plugins for Muzang IRC bot
259
+ test_files: []