solarsearch 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. data/.gitignore +23 -0
  2. data/.specification +294 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +17 -0
  5. data/Rakefile +76 -0
  6. data/Solarsearch.gemspec +176 -0
  7. data/VERSION +1 -0
  8. data/app/controllers/article_controller.rb +30 -0
  9. data/app/controllers/article_statuses_controller.rb +12 -0
  10. data/app/controllers/infosources_controller.rb +143 -0
  11. data/app/controllers/search_keywords_controller.rb +99 -0
  12. data/app/controllers/user_sessions_controller.rb +48 -0
  13. data/app/controllers/users_controller.rb +62 -0
  14. data/app/helpers/article_helper.rb +25 -0
  15. data/app/helpers/article_statuses_helper.rb +2 -0
  16. data/app/helpers/infosources_helper.rb +2 -0
  17. data/app/helpers/layout_helper.rb +22 -0
  18. data/app/helpers/search_keywords_helper.rb +2 -0
  19. data/app/helpers/site_helper.rb +2 -0
  20. data/app/helpers/user_sessions_helper.rb +2 -0
  21. data/app/helpers/users_helper.rb +2 -0
  22. data/app/models/article.rb +74 -0
  23. data/app/models/article_status.rb +20 -0
  24. data/app/models/infosource.rb +83 -0
  25. data/app/models/role.rb +2 -0
  26. data/app/models/roles_users.rb +2 -0
  27. data/app/models/search_keyword.rb +14 -0
  28. data/app/models/user.rb +132 -0
  29. data/app/models/user_mailer.rb +12 -0
  30. data/app/models/user_session.rb +2 -0
  31. data/config/locales/hu.yml +111 -0
  32. data/config/locales/sk.yml +111 -0
  33. data/init.rb +1 -0
  34. data/install.rb +1 -0
  35. data/lib/solarsearch.rb +9 -0
  36. data/lib/solarsearch/locales.rb +3 -0
  37. data/lib/solarsearch/routing.rb +31 -0
  38. data/rails/init.rb +1 -0
  39. data/solarsearch.gemspec +178 -0
  40. data/tasks/solarsearch_tasks.rake +4 -0
  41. data/test/blueprints.rb +34 -0
  42. data/test/blueprints/articles.rb +37 -0
  43. data/test/blueprints/infosources.rb +53 -0
  44. data/test/blueprints/infosources_files/pretty.html +17 -0
  45. data/test/blueprints/infosources_files/ugly.html +399 -0
  46. data/test/blueprints/search_keywords.rb +13 -0
  47. data/test/blueprints/users.rb +17 -0
  48. data/test/content_scrapper.rb +13 -0
  49. data/test/database.yml +7 -0
  50. data/test/functional/article_controller_test.rb +40 -0
  51. data/test/functional/email_controller_test.rb +9 -0
  52. data/test/functional/infosources_controller_test.rb +65 -0
  53. data/test/functional/restricted_logged_exceptions_controller_test.rb +38 -0
  54. data/test/functional/search_keywords_controller_test.rb +108 -0
  55. data/test/functional/user_sessions_controller_test.rb +39 -0
  56. data/test/functional/users_controller_test.rb +109 -0
  57. data/test/schema.rb +92 -0
  58. data/test/test_helper.rb +48 -0
  59. data/test/unit/article_test.rb +56 -0
  60. data/test/unit/helpers/article_helper_test.rb +20 -0
  61. data/test/unit/helpers/email_helper_test.rb +4 -0
  62. data/test/unit/helpers/user_sessions_helper_test.rb +4 -0
  63. data/test/unit/helpers/users_helper_test.rb +4 -0
  64. data/test/unit/infosource_test.rb +132 -0
  65. data/test/unit/role_test.rb +6 -0
  66. data/test/unit/roles_users_test.rb +6 -0
  67. data/test/unit/user_mailer_test.rb +24 -0
  68. data/test/unit/user_test.rb +103 -0
  69. data/uninstall.rb +1 -0
  70. metadata +297 -0
@@ -0,0 +1,48 @@
1
+ ENV['RAILS_ENV'] = 'test'
2
+ ENV['RAILS_ROOT'] ||= "#{File.dirname(__FILE__)}/../../../.."
3
+
4
+ require File.expand_path("#{ENV['RAILS_ROOT']}/config/environment")
5
+
6
+ require 'test_help'
7
+ require 'authlogic/test_case'
8
+ require 'mocha'
9
+ require "#{File.dirname(__FILE__)}/blueprints"
10
+
11
+ require 'content_scrapper'
12
+ require 'content_scrapper/feedzirra'
13
+ ContentScrapper.create_new_default("#{File.dirname(__FILE__)}/content_scrapper.rb")
14
+
15
+ class ActiveSupport::TestCase
16
+ def login_as_test_user
17
+ post
18
+ end
19
+ end
20
+
21
+ def load_schema
22
+ config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
23
+ ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
24
+ db_adapter = ENV['DB']
25
+
26
+ # no db passed, try one of these fine config-free DBs before bombing.
27
+ db_adapter ||=
28
+ begin
29
+ require 'rubygems'
30
+ require 'sqlite'
31
+ 'sqlite'
32
+ rescue MissingSourceFile
33
+ begin
34
+ require 'sqlite3'
35
+ 'sqlite3'
36
+ rescue MissingSourceFile
37
+ end
38
+ end
39
+
40
+ if db_adapter.nil?
41
+ raise "No DB Adapter selected. Pass the DB= option to pick one, or install Sqlite or Sqlite3."
42
+ end
43
+
44
+ ActiveRecord::Base.establish_connection(config[db_adapter])
45
+ load(File.dirname(__FILE__) + "/schema.rb")
46
+ require File.dirname(__FILE__) + '/../rails/init.rb'
47
+ end
48
+
@@ -0,0 +1,56 @@
1
+ require 'test_helper'
2
+
3
+ class ArticleTest < ActiveSupport::TestCase
4
+
5
+ context "for sunspot" do
6
+
7
+ should "create valid article" do
8
+ assert_difference('Article.count') do
9
+ article = Article.make
10
+ assert article.valid?
11
+ end
12
+ end
13
+
14
+ should "create invalid article, the URL is invalid" do
15
+ article = Article.make_unsaved(:url => Sham.incorrect_url)
16
+ assert !article.valid?
17
+ end
18
+
19
+ should "create duplicate article, should fail as the guid is the same" do
20
+ article = Article.make
21
+ article_duplicate = Article.make_unsaved(:guid => article.guid)
22
+ assert !article_duplicate.valid?
23
+ end
24
+
25
+ should "modify valid article, should fail when the URL changed to invalid" do
26
+ article = Article.make
27
+ article.url = Sham.incorrect_url
28
+ assert !article.valid?
29
+ end
30
+
31
+ context "on indexing and searching central-european characters" do
32
+ setup do
33
+ Sunspot.remove_all!
34
+ 10.times { Article.make }
35
+ [:accent_in_title, :accent_in_summary, :accent_in_body].each { |i| Article.make(i) }
36
+ Sunspot.commit
37
+ end
38
+ should "find articles with accents" do
39
+ search = Sunspot.search(Article) { keywords Sham.accented_word }
40
+ assert_equal 3, search.results.count
41
+ end
42
+ should "find articles with no accents" do
43
+ search = Sunspot.search(Article) { keywords Sham.unaccented_word }
44
+ assert_equal 3, search.results.count
45
+ end
46
+ end
47
+
48
+ context "on indexing characters prohibited in XML documents" do
49
+ setup { Sunspot.remove_all! }
50
+ should "not raise expcetion" do
51
+ assert_nothing_raised { Article.make(:with_corrupt_xml_chars) }
52
+ end
53
+ end
54
+ end
55
+ end
56
+
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+
3
+ class ArticleHelperTest < ActionView::TestCase
4
+
5
+ test "text shortening" do
6
+ text = 'This text here should remain. This still has to remain after shortening. But this should not.'
7
+
8
+ shortened_text = shorten_text(text, number_of_characters = 70, more_link = '..')
9
+ assert_equal 'This text here should remain. This still has to remain after shortening...', shortened_text
10
+ end
11
+
12
+ test "text shortening with nill or empty text" do
13
+ assert_equal '', shorten_text(nil)
14
+ assert_equal '', shorten_text('')
15
+ end
16
+
17
+ test "test shortener should return the same text if it short" do
18
+ assert_equal 'this is short', shorten_text('this is short', 20)
19
+ end
20
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class EmailHelperTest < ActionView::TestCase
4
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class UserSessionsHelperTest < ActionView::TestCase
4
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class UsersHelperTest < ActionView::TestCase
4
+ end
@@ -0,0 +1,132 @@
1
+ require 'test_helper'
2
+ require 'test/unit'
3
+ require 'mocha'
4
+
5
+ class InfosourceTest < ActiveSupport::TestCase
6
+
7
+ test "create valid infosource" do
8
+ infosource = Infosource.make
9
+ assert infosource.valid?
10
+ end
11
+
12
+ test "should fail when the sourcename is not in the given range" do
13
+ infosource_1 = Infosource.make_unsaved(:sourcename => 'x' * (Infosource::MIN_SOURCENAME_SIZE - 1))
14
+ assert !infosource_1.valid?
15
+ infosource_2 = Infosource.make_unsaved(:sourcename => 'x' * (Infosource::MAX_SOURCENAME_SIZE + 1))
16
+ assert !infosource_2.valid?
17
+ end
18
+
19
+ test "should fail when infosource with incorrect value is created" do
20
+ infosource = Infosource.make_unsaved(:sourcefeed => Sham.incorrect_url)
21
+ assert !infosource.valid?
22
+ infosource.save
23
+ assert_nil Infosource.find_by_sourcename(infosource.sourcename)
24
+ end
25
+
26
+ test "should fail when duplicate infosource is created" do
27
+ infosource = Infosource.make
28
+
29
+ infosource_duplicate = Infosource.make_unsaved(:sourcename => infosource.sourcename,
30
+ :sourcefeed => infosource.sourcefeed)
31
+
32
+ assert !infosource_duplicate.valid?
33
+ end
34
+
35
+ test "should accept empty sourcefeed" do
36
+ infosource = Infosource.make(:sourcefeed => '')
37
+ assert infosource.valid?
38
+ assert_equal infosource, Infosource.find_by_sourcename(infosource.sourcename)
39
+ end
40
+
41
+ #TODO create blueprints for the feed parsers
42
+ test "fetch feeds for an infosource" do
43
+ entry_1 = FeedEntry.make
44
+ entry_2 = FeedEntry.make
45
+ entries = [entry_1, entry_2]
46
+
47
+ parser_1 = Feedzirra::Parser::RSS.new
48
+ parser_1.stubs(:entries).returns(entries)
49
+ infosource = Infosource.make
50
+ Feedzirra::Feed.expects(:fetch_and_parse).with(infosource.sourcefeed).returns(parser_1)
51
+
52
+ Kernel.expects(:open).never
53
+
54
+ assert_equal 2, infosource.fetch_source
55
+ assert_equal 2, Article.count
56
+
57
+ article = Article.find_by_title(entry_1.title)
58
+ [:title, :summary, [:body, :content], :url, [:guid, :id]].each do |attribute|
59
+ #FIXME [:published_at, :published], temporarily removed, donot pass dont know why yet
60
+ if attribute.class == Array
61
+ article_attr, entry_attr = attribute[0], attribute[1]
62
+ else
63
+ article_attr = entry_attr = attribute
64
+ end
65
+ assert_equal entry_1.send(entry_attr), article[article_attr], "#{entry_attr.to_s} differs"
66
+ end
67
+ end
68
+
69
+ test "should not read feed if the feedsource is empty or nil" do
70
+ Feedzirra::Feed.expects(:fetch_and_parse).never
71
+ infosource = Infosource.make(:sourcefeed => '')
72
+ assert_nil infosource.fetch_source
73
+ end
74
+
75
+ test "update new entries of the infosource" do
76
+ entry_1 = FeedEntry.make
77
+ entry_2 = FeedEntry.make
78
+ entries_1 = [entry_1, entry_2]
79
+
80
+ entry_3 = FeedEntry.make
81
+ entries_2 = [entry_2, entry_3]
82
+
83
+ infosource = Infosource.make
84
+
85
+ parser_1 = Feedzirra::Parser::RSS.new
86
+ parser_1.stubs(:entries).returns(entries_1)
87
+ Feedzirra::Feed.expects(:fetch_and_parse).with(infosource.sourcefeed).returns(parser_1)
88
+
89
+ parser_2 = Feedzirra::Parser::RSS.new
90
+ parser_2.stubs(:entries).returns(entries_2)
91
+ parser_2.stubs(:updated?).returns(true)
92
+ Feedzirra::Feed.expects(:fetch_and_parse).with(infosource.sourcefeed).returns(parser_2)
93
+
94
+ Kernel.expects(:open).never
95
+
96
+ assert_equal 2, infosource.fetch_source
97
+ assert_equal 1, infosource.fetch_source
98
+
99
+ assert_equal 3, Article.count
100
+ end
101
+
102
+ test "should not fail when the rss feed in not accessible" do
103
+ infosource = Infosource.make
104
+ Feedzirra::Feed.expects(:fetch_and_parse).with(infosource.sourcefeed).returns(0)
105
+ assert_equal nil, infosource.fetch_source
106
+ end
107
+
108
+ test "should fetch all sources" do
109
+ feed_1 = [ FeedEntry.make ]
110
+ feed_2 = [ FeedEntry.make ]
111
+ feed_3 = [ FeedEntry.make ]
112
+
113
+ infosource_1 = Infosource.make
114
+ infosource_2 = Infosource.make(:sourcefeed => '')
115
+ infosource_3 = Infosource.make
116
+
117
+ parser_1 = Feedzirra::Parser::RSS.new
118
+ parser_1.stubs(:entries).returns(feed_1)
119
+ Feedzirra::Feed.expects(:fetch_and_parse).with(infosource_1.sourcefeed).returns(parser_1)
120
+
121
+ parser_2 = Feedzirra::Parser::RSS.new
122
+ parser_2.stubs(:entries).returns(feed_2)
123
+ Feedzirra::Feed.expects(:fetch_and_parse).with(infosource_2.sourcefeed).never #returns(parser_2)
124
+
125
+ parser_3 = Feedzirra::Parser::RSS.new
126
+ parser_3.stubs(:entries).returns(feed_3)
127
+ Feedzirra::Feed.expects(:fetch_and_parse).with(infosource_3.sourcefeed).returns(parser_3)
128
+
129
+ assert_equal 2, Infosource.fetch_all_sources
130
+ end
131
+
132
+ end
@@ -0,0 +1,6 @@
1
+ require 'test_helper'
2
+
3
+ class RoleTest < ActiveSupport::TestCase
4
+ # Replace this with your real tests.
5
+ #FIXME write the tests for roles
6
+ end
@@ -0,0 +1,6 @@
1
+ require 'test_helper'
2
+
3
+ class RolesUsersTest < ActiveSupport::TestCase
4
+ # Replace this with your real tests.
5
+ #FIXME write the tests for the role-user pair model
6
+ end
@@ -0,0 +1,24 @@
1
+
2
+ require File.dirname(__FILE__) + '/../test_helper'
3
+ require 'user_mailer'
4
+
5
+ class UserMailerTest < ActionMailer::TestCase
6
+ CHARSET = "utf-8"
7
+
8
+ include ActionMailer::Quoting
9
+
10
+ def setup
11
+ @user = User.make
12
+ @article = Article.make
13
+ end
14
+
15
+ def test_newsupdate
16
+ newsupdate = UserMailer.create_newsupdate(@user, @article)
17
+ assert_equal 'fificium@gmail.com', newsupdate.from.first
18
+ assert_equal I18n.t(:usermailer_newsupdate_subject), newsupdate.subject
19
+ assert_equal @user.email, newsupdate.to.first
20
+ assert_match /#{@article.body}/, newsupdate.body
21
+ assert_match /#{@article.summary}/, newsupdate.body
22
+ assert_match /#{@article.title}/, newsupdate.body
23
+ end
24
+ end
@@ -0,0 +1,103 @@
1
+ require 'test_helper'
2
+
3
+ #TODO test validations!!!!! email, username and others
4
+
5
+ class UserTest < ActiveSupport::TestCase
6
+
7
+ test "create valid user" do
8
+ user = User.make
9
+ assert user.valid?
10
+ assert_equal 1, User.count
11
+ end
12
+
13
+ test "create invalid user, the passwords differ" do
14
+ user = User.make_unsaved(:differing_password)
15
+ assert !user.valid?
16
+ end
17
+
18
+ test "create duplicate users" do
19
+ user = User.make
20
+ duplicate_user = User.make_unsaved(:username => user.username,
21
+ :email => user.email)
22
+ assert !duplicate_user.valid?
23
+ assert_equal 2, duplicate_user.errors.count
24
+ assert_equal 1, User.count
25
+ end
26
+
27
+ context "on search" do
28
+ setup do
29
+ Sunspot.remove_all!
30
+ @user = User.make
31
+ end
32
+
33
+ context "for results having a common item for two search queries" do
34
+ setup do
35
+ query1 = SearchKeyword.make(:user => @user)
36
+ query2 = SearchKeyword.make(:user => @user)
37
+ article1 = Article.make(:body => query1.query, :published_at => Time.now)
38
+ article2 = Article.make(:body => query2.query, :published_at => Time.now)
39
+ article3 = Article.make(:body => "#{query1.query} #{query2.query}",
40
+ :published_at => Time.now)
41
+ Sunspot.commit
42
+ end
43
+ should("find every article only once") { assert_equal 3, @user.collect_recent_articles.count }
44
+ end
45
+
46
+ context "for more results then can be collected for the user once" do
47
+ setup do
48
+ @search_keyword = SearchKeyword.make(:user => @user)
49
+ query = @search_keyword.query
50
+ (User::MAX_NUMBER_OF_ARTICLES_PER_NEWSUPDATE+1).times do |iteration|
51
+ Article.make(:body => query, :published_at => Time.now)
52
+ end
53
+ Sunspot.commit
54
+ end
55
+ should "not fetch more than allowed number of articles for a search keyword" do
56
+ assert_equal User::MAX_NUMBER_OF_ARTICLES_PER_NEWSUPDATE,
57
+ @user.recent_articles_for_search_keyword(@search_keyword).count
58
+ end
59
+ should "not collect more than allowed number of articles" do
60
+ assert_equal User::MAX_NUMBER_OF_ARTICLES_PER_NEWSUPDATE, @user.collect_recent_articles.count
61
+ end
62
+ end
63
+
64
+ context "on articles with different publication times" do
65
+ setup do
66
+ @search_keyword = SearchKeyword.make(:user => @user)
67
+ query = @search_keyword.query
68
+ articles = []
69
+ User::MAX_NUMBER_OF_ARTICLES_PER_NEWSUPDATE.times do |iteration|
70
+ articles[iteration] = Article.make(:body => query,
71
+ :published_at => (Time.now - iteration.day))
72
+ end
73
+ end
74
+ should "sort the recent articles fetched for one source" do
75
+ recent_articles = @user.recent_articles_for_search_keyword(@search_keyword)
76
+ (recent_articles.count - 1).times do |item|
77
+ assert recent_articles[item].published_at > recent_articles[item+1].published_at ,
78
+ 'the articles has to be sorted from newer to older'
79
+ end
80
+ end
81
+ should "sort the collected list of recent articles" do
82
+ collected_articles = @user.collect_recent_articles
83
+ (collected_articles.count - 1).times do |item|
84
+ assert collected_articles[item].published_at > collected_articles[item+1].published_at ,
85
+ 'the articles has to be sorted from newer to older'
86
+ end
87
+ end
88
+ end
89
+
90
+ context "on filtering spams using the article condition block" do
91
+ setup do
92
+ @search_keyword = SearchKeyword.make(:user => @user, :query => 'spam')
93
+ Article.make(:body => "spam #{'x'*User::MAX_SIZE_OF_A_MAIL_IN_CHARACTERS}", :published_at => Time.now)
94
+ end
95
+ should "filter the long articles out, we do not want to send spams" do
96
+ collected_articles = @user.collect_recent_articles do |article|
97
+ article.size <= User::MAX_SIZE_OF_A_MAIL_IN_CHARACTERS
98
+ end
99
+ assert_equal 0, collected_articles.count
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
metadata ADDED
@@ -0,0 +1,297 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: solarsearch
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.6
5
+ platform: ruby
6
+ authors:
7
+ - Gyorgy Frivolt
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-02-25 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: thoughtbot-shoulda
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: content_scrapper
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.4
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: compass
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: haml
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: authlogic
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: will_paginate
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ - !ruby/object:Gem::Dependency
76
+ name: whenever
77
+ type: :runtime
78
+ version_requirement:
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: "0"
84
+ version:
85
+ - !ruby/object:Gem::Dependency
86
+ name: acl9
87
+ type: :runtime
88
+ version_requirement:
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: "0"
94
+ version:
95
+ - !ruby/object:Gem::Dependency
96
+ name: sunspot
97
+ type: :runtime
98
+ version_requirement:
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: "0"
104
+ version:
105
+ - !ruby/object:Gem::Dependency
106
+ name: sunspot_rails
107
+ type: :runtime
108
+ version_requirement:
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: "0"
114
+ version:
115
+ - !ruby/object:Gem::Dependency
116
+ name: RedCloth
117
+ type: :runtime
118
+ version_requirement:
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: "0"
124
+ version:
125
+ - !ruby/object:Gem::Dependency
126
+ name: sanitize
127
+ type: :runtime
128
+ version_requirement:
129
+ version_requirements: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: "0"
134
+ version:
135
+ - !ruby/object:Gem::Dependency
136
+ name: nokogiri
137
+ type: :runtime
138
+ version_requirement:
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: "0"
144
+ version:
145
+ - !ruby/object:Gem::Dependency
146
+ name: feedzirra
147
+ type: :runtime
148
+ version_requirement:
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: "0"
154
+ version:
155
+ - !ruby/object:Gem::Dependency
156
+ name: mysql
157
+ type: :runtime
158
+ version_requirement:
159
+ version_requirements: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: "0"
164
+ version:
165
+ description: Have a search motor built on the top of Solr, a highly customizable, scalable and well performing search engine. You are only few steps away from creating your own search motor.
166
+ email: gyorgy.frivolt@gmail.com
167
+ executables: []
168
+
169
+ extensions: []
170
+
171
+ extra_rdoc_files:
172
+ - LICENSE
173
+ - README.rdoc
174
+ files:
175
+ - .gitignore
176
+ - .specification
177
+ - LICENSE
178
+ - README.rdoc
179
+ - Rakefile
180
+ - Solarsearch.gemspec
181
+ - VERSION
182
+ - app/controllers/article_controller.rb
183
+ - app/controllers/article_statuses_controller.rb
184
+ - app/controllers/infosources_controller.rb
185
+ - app/controllers/search_keywords_controller.rb
186
+ - app/controllers/user_sessions_controller.rb
187
+ - app/controllers/users_controller.rb
188
+ - app/helpers/article_helper.rb
189
+ - app/helpers/article_statuses_helper.rb
190
+ - app/helpers/infosources_helper.rb
191
+ - app/helpers/layout_helper.rb
192
+ - app/helpers/search_keywords_helper.rb
193
+ - app/helpers/site_helper.rb
194
+ - app/helpers/user_sessions_helper.rb
195
+ - app/helpers/users_helper.rb
196
+ - app/models/article.rb
197
+ - app/models/article_status.rb
198
+ - app/models/infosource.rb
199
+ - app/models/role.rb
200
+ - app/models/roles_users.rb
201
+ - app/models/search_keyword.rb
202
+ - app/models/user.rb
203
+ - app/models/user_mailer.rb
204
+ - app/models/user_session.rb
205
+ - config/locales/hu.yml
206
+ - config/locales/sk.yml
207
+ - init.rb
208
+ - install.rb
209
+ - lib/solarsearch.rb
210
+ - lib/solarsearch/locales.rb
211
+ - lib/solarsearch/routing.rb
212
+ - rails/init.rb
213
+ - solarsearch.gemspec
214
+ - tasks/solarsearch_tasks.rake
215
+ - test/blueprints.rb
216
+ - test/blueprints/articles.rb
217
+ - test/blueprints/infosources.rb
218
+ - test/blueprints/infosources_files/pretty.html
219
+ - test/blueprints/infosources_files/ugly.html
220
+ - test/blueprints/search_keywords.rb
221
+ - test/blueprints/users.rb
222
+ - test/content_scrapper.rb
223
+ - test/database.yml
224
+ - test/functional/article_controller_test.rb
225
+ - test/functional/email_controller_test.rb
226
+ - test/functional/infosources_controller_test.rb
227
+ - test/functional/restricted_logged_exceptions_controller_test.rb
228
+ - test/functional/search_keywords_controller_test.rb
229
+ - test/functional/user_sessions_controller_test.rb
230
+ - test/functional/users_controller_test.rb
231
+ - test/schema.rb
232
+ - test/test_helper.rb
233
+ - test/unit/article_test.rb
234
+ - test/unit/helpers/article_helper_test.rb
235
+ - test/unit/helpers/email_helper_test.rb
236
+ - test/unit/helpers/user_sessions_helper_test.rb
237
+ - test/unit/helpers/users_helper_test.rb
238
+ - test/unit/infosource_test.rb
239
+ - test/unit/role_test.rb
240
+ - test/unit/roles_users_test.rb
241
+ - test/unit/user_mailer_test.rb
242
+ - test/unit/user_test.rb
243
+ - uninstall.rb
244
+ has_rdoc: true
245
+ homepage: http://github.com/fifigyuri/solarsearch
246
+ licenses: []
247
+
248
+ post_install_message:
249
+ rdoc_options:
250
+ - --charset=UTF-8
251
+ require_paths:
252
+ - lib
253
+ required_ruby_version: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: "0"
258
+ version:
259
+ required_rubygems_version: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: "0"
264
+ version:
265
+ requirements: []
266
+
267
+ rubyforge_project:
268
+ rubygems_version: 1.3.5
269
+ signing_key:
270
+ specification_version: 3
271
+ summary: Searching made so simple that it is even a fun
272
+ test_files:
273
+ - test/blueprints/users.rb
274
+ - test/blueprints/articles.rb
275
+ - test/blueprints/search_keywords.rb
276
+ - test/blueprints/infosources.rb
277
+ - test/schema.rb
278
+ - test/functional/search_keywords_controller_test.rb
279
+ - test/functional/users_controller_test.rb
280
+ - test/functional/infosources_controller_test.rb
281
+ - test/functional/article_controller_test.rb
282
+ - test/functional/restricted_logged_exceptions_controller_test.rb
283
+ - test/functional/user_sessions_controller_test.rb
284
+ - test/functional/email_controller_test.rb
285
+ - test/test_helper.rb
286
+ - test/unit/user_test.rb
287
+ - test/unit/roles_users_test.rb
288
+ - test/unit/infosource_test.rb
289
+ - test/unit/role_test.rb
290
+ - test/unit/article_test.rb
291
+ - test/unit/user_mailer_test.rb
292
+ - test/unit/helpers/article_helper_test.rb
293
+ - test/unit/helpers/email_helper_test.rb
294
+ - test/unit/helpers/user_sessions_helper_test.rb
295
+ - test/unit/helpers/users_helper_test.rb
296
+ - test/content_scrapper.rb
297
+ - test/blueprints.rb