thinking-sphinx-099 1.2.12 → 1.2.13
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +4 -17
- data/VERSION.yml +2 -1
- data/features/alternate_primary_key.feature +27 -0
- data/features/attribute_transformation.feature +22 -0
- data/features/attribute_updates.feature +33 -0
- data/features/datetime_deltas.feature +66 -0
- data/features/delayed_delta_indexing.feature +37 -0
- data/features/deleting_instances.feature +64 -0
- data/features/direct_attributes.feature +11 -0
- data/features/excerpts.feature +13 -0
- data/features/extensible_delta_indexing.feature +9 -0
- data/features/facets.feature +76 -0
- data/features/facets_across_model.feature +29 -0
- data/features/handling_edits.feature +76 -0
- data/features/retry_stale_indexes.feature +24 -0
- data/features/searching_across_models.feature +20 -0
- data/features/searching_by_model.feature +175 -0
- data/features/searching_with_find_arguments.feature +56 -0
- data/features/sphinx_detection.feature +25 -0
- data/features/sphinx_scopes.feature +35 -0
- data/features/step_definitions/alpha_steps.rb +3 -0
- data/features/step_definitions/beta_steps.rb +7 -0
- data/features/step_definitions/common_steps.rb +174 -0
- data/features/step_definitions/datetime_delta_steps.rb +15 -0
- data/features/step_definitions/delayed_delta_indexing_steps.rb +7 -0
- data/features/step_definitions/extensible_delta_indexing_steps.rb +7 -0
- data/features/step_definitions/facet_steps.rb +92 -0
- data/features/step_definitions/find_arguments_steps.rb +36 -0
- data/features/step_definitions/gamma_steps.rb +15 -0
- data/features/step_definitions/scope_steps.rb +11 -0
- data/features/step_definitions/search_steps.rb +89 -0
- data/features/step_definitions/sphinx_steps.rb +31 -0
- data/features/sti_searching.feature +14 -0
- data/features/support/database.example.yml +3 -0
- data/features/support/database.yml +5 -0
- data/features/support/db/active_record.rb +40 -0
- data/features/support/db/database.yml +5 -0
- data/features/support/db/fixtures/alphas.rb +10 -0
- data/features/support/db/fixtures/authors.rb +1 -0
- data/features/support/db/fixtures/betas.rb +10 -0
- data/features/support/db/fixtures/boxes.rb +9 -0
- data/features/support/db/fixtures/categories.rb +1 -0
- data/features/support/db/fixtures/cats.rb +3 -0
- data/features/support/db/fixtures/comments.rb +24 -0
- data/features/support/db/fixtures/delayed_betas.rb +10 -0
- data/features/support/db/fixtures/developers.rb +29 -0
- data/features/support/db/fixtures/dogs.rb +3 -0
- data/features/support/db/fixtures/extensible_betas.rb +10 -0
- data/features/support/db/fixtures/gammas.rb +10 -0
- data/features/support/db/fixtures/people.rb +1001 -0
- data/features/support/db/fixtures/posts.rb +6 -0
- data/features/support/db/fixtures/robots.rb +14 -0
- data/features/support/db/fixtures/tags.rb +27 -0
- data/features/support/db/fixtures/thetas.rb +10 -0
- data/features/support/db/migrations/create_alphas.rb +7 -0
- data/features/support/db/migrations/create_animals.rb +5 -0
- data/features/support/db/migrations/create_authors.rb +3 -0
- data/features/support/db/migrations/create_authors_posts.rb +6 -0
- data/features/support/db/migrations/create_betas.rb +5 -0
- data/features/support/db/migrations/create_boxes.rb +5 -0
- data/features/support/db/migrations/create_categories.rb +3 -0
- data/features/support/db/migrations/create_comments.rb +10 -0
- data/features/support/db/migrations/create_delayed_betas.rb +17 -0
- data/features/support/db/migrations/create_developers.rb +9 -0
- data/features/support/db/migrations/create_extensible_betas.rb +5 -0
- data/features/support/db/migrations/create_gammas.rb +3 -0
- data/features/support/db/migrations/create_people.rb +13 -0
- data/features/support/db/migrations/create_posts.rb +5 -0
- data/features/support/db/migrations/create_robots.rb +4 -0
- data/features/support/db/migrations/create_taggings.rb +5 -0
- data/features/support/db/migrations/create_tags.rb +4 -0
- data/features/support/db/migrations/create_thetas.rb +5 -0
- data/features/support/db/mysql.rb +3 -0
- data/features/support/db/postgresql.rb +3 -0
- data/features/support/env.rb +18 -0
- data/features/support/lib/generic_delta_handler.rb +8 -0
- data/features/support/models/alpha.rb +10 -0
- data/features/support/models/animal.rb +5 -0
- data/features/support/models/author.rb +3 -0
- data/features/support/models/beta.rb +8 -0
- data/features/support/models/box.rb +8 -0
- data/features/support/models/cat.rb +3 -0
- data/features/support/models/category.rb +4 -0
- data/features/support/models/comment.rb +10 -0
- data/features/support/models/delayed_beta.rb +7 -0
- data/features/support/models/developer.rb +16 -0
- data/features/support/models/dog.rb +3 -0
- data/features/support/models/extensible_beta.rb +9 -0
- data/features/support/models/gamma.rb +5 -0
- data/features/support/models/person.rb +23 -0
- data/features/support/models/post.rb +20 -0
- data/features/support/models/robot.rb +12 -0
- data/features/support/models/tag.rb +3 -0
- data/features/support/models/tagging.rb +4 -0
- data/features/support/models/theta.rb +7 -0
- data/features/support/post_database.rb +43 -0
- data/lib/cucumber/thinking_sphinx/internal_world.rb +125 -0
- data/lib/cucumber/thinking_sphinx/sql_logger.rb +20 -0
- data/lib/thinking_sphinx.rb +4 -2
- data/lib/thinking_sphinx/active_record.rb +1 -2
- data/lib/thinking_sphinx/adapters/mysql_adapter.rb +1 -1
- data/lib/thinking_sphinx/adapters/postgresql_adapter.rb +18 -11
- data/lib/thinking_sphinx/attribute.rb +3 -4
- data/lib/thinking_sphinx/excerpter.rb +1 -1
- data/lib/thinking_sphinx/search.rb +1 -0
- data/lib/thinking_sphinx/source.rb +1 -1
- data/spec/lib/thinking_sphinx/active_record_spec.rb +0 -11
- data/spec/lib/thinking_sphinx/attribute_spec.rb +14 -7
- data/spec/lib/thinking_sphinx/deltas/job_spec.rb +32 -0
- data/spec/lib/thinking_sphinx/excerpter_spec.rb +8 -0
- data/spec/lib/thinking_sphinx/search_spec.rb +9 -0
- data/tasks/distribution.rb +4 -1
- data/tasks/testing.rb +8 -19
- metadata +99 -2
@@ -0,0 +1,15 @@
|
|
1
|
+
When /^I index the theta datetime delta$/ do
|
2
|
+
Theta.sphinx_indexes.first.delta_object.delayed_index(Theta)
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I change the name of theta (\w+) to (\w+)$/ do |current, replacement|
|
6
|
+
Theta.find_by_name(current).update_attributes(:name => replacement)
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I create a new theta named (\w+)$/ do |name|
|
10
|
+
Theta.create(:name => name)
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I delete the theta named (\w+)$/ do |name|
|
14
|
+
Theta.find_by_name(name).destroy
|
15
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
When /I change the name of extensible beta (\w+) to (\w+)$/ do |current, replacement|
|
2
|
+
ExtensibleBeta.find_by_name(current).update_attributes(:name => replacement)
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^the generic delta handler should handle the delta indexing$/ do
|
6
|
+
ExtensibleBeta.find(:first, :conditions => {:changed_by_generic => true}).should_not be_nil
|
7
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
When /^I am requesting facet results$/ do
|
2
|
+
@results = nil
|
3
|
+
@method = :facets
|
4
|
+
end
|
5
|
+
|
6
|
+
When /^I am requesting just the facet (\w+)$/ do |facet|
|
7
|
+
@results = nil
|
8
|
+
@options[:facets] = facet.downcase.to_sym
|
9
|
+
end
|
10
|
+
|
11
|
+
When /^I am requesting just the facets (\w+) and (\w+)$/ do |one, two|
|
12
|
+
@results = nil
|
13
|
+
@options[:facets] = [one.downcase.to_sym, two.downcase.to_sym]
|
14
|
+
end
|
15
|
+
|
16
|
+
When "I want classes included" do
|
17
|
+
@options[:class_facet] = true
|
18
|
+
end
|
19
|
+
|
20
|
+
When "I don't want classes included" do
|
21
|
+
@options[:class_facet] = false
|
22
|
+
end
|
23
|
+
|
24
|
+
When "I want all possible attributes" do
|
25
|
+
@options[:all_facets] = true
|
26
|
+
end
|
27
|
+
|
28
|
+
When /^I drill down where (\w+) is (\w+)$/ do |facet, value|
|
29
|
+
@results = results.for(facet.downcase.to_sym => value)
|
30
|
+
end
|
31
|
+
|
32
|
+
When /^I drill down where (\w+) is (\w+) and (\w+) is (\w+)$/ do |facet_one, value_one, facet_two, value_two|
|
33
|
+
value_one = value_one.to_i unless value_one[/^\d+$/].nil?
|
34
|
+
value_two = value_two.to_i unless value_two[/^\d+$/].nil?
|
35
|
+
|
36
|
+
@results = results.for(
|
37
|
+
facet_one.downcase.to_sym => value_one,
|
38
|
+
facet_two.downcase.to_sym => value_two
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
When /^I drill down where ([\w_]+) includes the id of tag (\w+)$/ do |facet, text|
|
43
|
+
tag = Tag.find_by_text(text)
|
44
|
+
@results = results.for(facet.downcase.to_sym => tag.id)
|
45
|
+
end
|
46
|
+
|
47
|
+
When /^I drill down where ([\w_]+) includes the id of tags (\w+) or (\w+)$/ do |facet, text_one, text_two|
|
48
|
+
tag_one = Tag.find_by_text(text_one)
|
49
|
+
tag_two = Tag.find_by_text(text_two)
|
50
|
+
@results = results.for(facet.downcase.to_sym => [tag_one.id, tag_two.id])
|
51
|
+
end
|
52
|
+
|
53
|
+
Then "I should have valid facet results" do
|
54
|
+
results.should be_kind_of(Hash)
|
55
|
+
results.values.each { |value| value.should be_kind_of(Hash) }
|
56
|
+
end
|
57
|
+
|
58
|
+
Then /^I should have (\d+) facets?$/ do |count|
|
59
|
+
results.keys.length.should == count.to_i
|
60
|
+
end
|
61
|
+
|
62
|
+
Then /^I should have the facet ([\w_\s]+)$/ do |name|
|
63
|
+
results[facet_name(name)].should be_kind_of(Hash)
|
64
|
+
end
|
65
|
+
|
66
|
+
Then /^I should not have the facet ([\w_\s]+)$/ do |name|
|
67
|
+
results.keys.should_not include(facet_name(name))
|
68
|
+
end
|
69
|
+
|
70
|
+
Then /^the ([\w_\s]+) facet should have an? "([\w\s_]+)" key with (\d+) hits$/ do |name, key, hit_count|
|
71
|
+
facet_name = facet_name name
|
72
|
+
results[facet_name].keys.should include(key)
|
73
|
+
results[facet_name][key].should eql(hit_count.to_i)
|
74
|
+
end
|
75
|
+
|
76
|
+
Then /^the ([\w_\s]+) facet should have an? "(\w+)" key$/ do |name, key|
|
77
|
+
results[facet_name(name)].keys.should include(key)
|
78
|
+
end
|
79
|
+
|
80
|
+
Then /^the ([\w_\s]+) facet should have an? (\d+\.?\d*) key$/ do |name, key|
|
81
|
+
if key[/\./]
|
82
|
+
key = key.to_f
|
83
|
+
else
|
84
|
+
key = key.to_i
|
85
|
+
end
|
86
|
+
|
87
|
+
results[facet_name(name)].keys.should include(key)
|
88
|
+
end
|
89
|
+
|
90
|
+
def facet_name(string)
|
91
|
+
string.gsub(/\s/, '').underscore.to_sym
|
92
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
When "I include comments" do
|
2
|
+
@results = nil
|
3
|
+
@options[:include] = :comments
|
4
|
+
end
|
5
|
+
|
6
|
+
When /^I get the first comment$/ do
|
7
|
+
@comment = Comment.find(:first)
|
8
|
+
end
|
9
|
+
|
10
|
+
When /^I track queries$/ do
|
11
|
+
$queries_executed = []
|
12
|
+
end
|
13
|
+
|
14
|
+
When /^I compare comments$/ do
|
15
|
+
results.first.comments.first.should == @comment
|
16
|
+
end
|
17
|
+
|
18
|
+
When /^I select only content$/ do
|
19
|
+
@results = nil
|
20
|
+
@options[:select] = "id, content"
|
21
|
+
end
|
22
|
+
|
23
|
+
Then /^I should have (\d+) quer[yies]+$/ do |count|
|
24
|
+
$queries_executed.length.should == count.to_i
|
25
|
+
end
|
26
|
+
|
27
|
+
Then /^I should not get an error accessing the subject$/ do
|
28
|
+
lambda { results.first.subject }.should_not raise_error
|
29
|
+
end
|
30
|
+
|
31
|
+
Then /^I should get an error accessing the subject$/ do
|
32
|
+
error_class = NoMethodError
|
33
|
+
error_class = ActiveRecord::MissingAttributeError if ActiveRecord.constants.include?("MissingAttributeError")
|
34
|
+
|
35
|
+
lambda { results.first.subject }.should raise_error(error_class)
|
36
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
When /^I destroy gamma (\w+) without callbacks$/ do |name|
|
2
|
+
@results = nil
|
3
|
+
gamma = Gamma.find_by_name(name)
|
4
|
+
Gamma.delete(gamma.id) if gamma
|
5
|
+
end
|
6
|
+
|
7
|
+
Then "I should get a single result of nil" do
|
8
|
+
results.to_a.should == [nil]
|
9
|
+
end
|
10
|
+
|
11
|
+
Then /^I should get a single gamma result with a name of (\w+)$/ do |name|
|
12
|
+
results.length.should == 1
|
13
|
+
results.first.should be_a(Gamma)
|
14
|
+
results.first.name.should == name
|
15
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
When /^I use the ([\w]+) scope$/ do |scope|
|
2
|
+
@results = results.send(scope.to_sym)
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I use the ([\w]+) scope set to "([^\"]*)"$/ do |scope, value|
|
6
|
+
@results = results.send(scope.to_sym, value)
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I use the ([\w]+) scope set to (\d+)$/ do |scope, int|
|
10
|
+
@results = results.send(scope.to_sym, int.to_i)
|
11
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
When /^I search for the specific id of (\d+) in the (\w+) index$/ do |id, index|
|
3
|
+
@id = id.to_i
|
4
|
+
@index = index
|
5
|
+
end
|
6
|
+
|
7
|
+
When /^I search for the document id of (\w+) (\w+) in the (\w+) index$/ do |model, name, index|
|
8
|
+
model = model.gsub(/\s/, '_').camelize.constantize
|
9
|
+
@id = model.find_by_name(name).sphinx_document_id
|
10
|
+
@index = index
|
11
|
+
end
|
12
|
+
|
13
|
+
Then "it should exist" do
|
14
|
+
ThinkingSphinx::Search.search_for_id(@id, @index).should == true
|
15
|
+
end
|
16
|
+
|
17
|
+
Then "it should not exist" do
|
18
|
+
ThinkingSphinx::Search.search_for_id(@id, @index).should == false
|
19
|
+
end
|
20
|
+
|
21
|
+
Then "it should exist if using Rails 2.1 or newer" do
|
22
|
+
require 'active_record/version'
|
23
|
+
unless ActiveRecord::VERSION::STRING.to_f < 2.1
|
24
|
+
ThinkingSphinx::Search.search_for_id(@id, @index).should == true
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
Then "it should not exist if using Rails 2.1 or newer" do
|
29
|
+
require 'active_record/version'
|
30
|
+
unless ActiveRecord::VERSION::STRING.to_f < 2.1
|
31
|
+
ThinkingSphinx::Search.search_for_id(@id, @index).should == false
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
Then /^I can iterate by result and group and count$/ do
|
36
|
+
results.each_with_groupby_and_count do |result, group, count|
|
37
|
+
result.should be_kind_of(@model)
|
38
|
+
count.should be_kind_of(Integer)
|
39
|
+
group.should be_kind_of(Integer)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
Then "each result id should match the corresponding sphinx internal id" do
|
44
|
+
results.each_with_sphinx_internal_id do |result, id|
|
45
|
+
result.id.should == id
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
Then "I should have an array of integers" do
|
50
|
+
results.each do |result|
|
51
|
+
result.should be_kind_of(Integer)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
Then "searching for ids should match the record ids of the normal search results" do
|
56
|
+
normal_results = results
|
57
|
+
|
58
|
+
# reset search, switch method
|
59
|
+
@results = nil
|
60
|
+
@method = :search_for_ids
|
61
|
+
|
62
|
+
results.to_a.should == normal_results.collect(&:id)
|
63
|
+
end
|
64
|
+
|
65
|
+
Then /^I should get a value of (\d+)$/ do |count|
|
66
|
+
results.should == count.to_i
|
67
|
+
end
|
68
|
+
|
69
|
+
Then /^the (\w+) excerpt of the first result is "(.*)"$/ do |column, string|
|
70
|
+
excerpt = results.excerpt_for(results.first.send(column))
|
71
|
+
if excerpt.respond_to?(:force_encoding)
|
72
|
+
excerpt = excerpt.force_encoding('UTF-8')
|
73
|
+
end
|
74
|
+
|
75
|
+
excerpt.should == string
|
76
|
+
end
|
77
|
+
|
78
|
+
Then /^calling (\w+) on the first result excerpts object should return "(.*)"$/ do |column, string|
|
79
|
+
excerpt = results.first.excerpts.send(column)
|
80
|
+
if excerpt.respond_to?(:force_encoding)
|
81
|
+
excerpt = excerpt.force_encoding('UTF-8')
|
82
|
+
end
|
83
|
+
|
84
|
+
excerpt.should == string
|
85
|
+
end
|
86
|
+
|
87
|
+
Then /^the first result should have a (\w+\s?\w*) of (\d+)$/ do |attribute, value|
|
88
|
+
results.first.sphinx_attributes[attribute.gsub(/\s+/, '_')].should == value.to_i
|
89
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
Given "Sphinx is running" do
|
2
|
+
ThinkingSphinx::Configuration.instance.controller.should be_running
|
3
|
+
end
|
4
|
+
|
5
|
+
When "I kill the Sphinx process" do
|
6
|
+
Process.kill(9, ThinkingSphinx.sphinx_pid.to_i)
|
7
|
+
end
|
8
|
+
|
9
|
+
When "I wait for Sphinx to catch up" do
|
10
|
+
sleep(0.25)
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I start Sphinx/ do
|
14
|
+
ThinkingSphinx::Configuration.instance.controller.start
|
15
|
+
end
|
16
|
+
|
17
|
+
When "I stop Sphinx" do
|
18
|
+
ThinkingSphinx::Configuration.instance.controller.stop
|
19
|
+
end
|
20
|
+
|
21
|
+
Then /^Sphinx should be running/ do
|
22
|
+
ThinkingSphinx.sphinx_running?.should be_true
|
23
|
+
end
|
24
|
+
|
25
|
+
Then "Sphinx should not be running" do
|
26
|
+
ThinkingSphinx.sphinx_running?.should be_false
|
27
|
+
end
|
28
|
+
|
29
|
+
When /^I (enable|disable) delta updates$/ do |mode|
|
30
|
+
ThinkingSphinx.deltas_enabled = (mode == 'enable')
|
31
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Feature: Searching via STI model relationships
|
2
|
+
In order to be used easy in applications with STI relationships
|
3
|
+
Thinking Sphinx
|
4
|
+
Should return expected results depending on where in the hierarchy searches are called from.
|
5
|
+
|
6
|
+
Scenario: Searching from a parent model
|
7
|
+
Given Sphinx is running
|
8
|
+
And I am searching on animals
|
9
|
+
Then I should get as many results as there are animals
|
10
|
+
|
11
|
+
Scenario: Searching from a child model
|
12
|
+
Given Sphinx is running
|
13
|
+
And I am searching on cats
|
14
|
+
Then I should get as many results as there are cats
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'active_record'
|
3
|
+
|
4
|
+
# Database Defaults
|
5
|
+
host = "localhost"
|
6
|
+
username = "thinking_sphinx"
|
7
|
+
password = nil
|
8
|
+
|
9
|
+
# Read in YAML file
|
10
|
+
if File.exist?("features/support/db/database.yml")
|
11
|
+
config = YAML.load open("features/support/db/database.yml")
|
12
|
+
host = config["host"] || host
|
13
|
+
username = config["username"] || username
|
14
|
+
password = config["password"] || password
|
15
|
+
end
|
16
|
+
|
17
|
+
# Set up Connection
|
18
|
+
ActiveRecord::Base.establish_connection(
|
19
|
+
:adapter => Database,
|
20
|
+
:database => 'thinking_sphinx',
|
21
|
+
:username => username,
|
22
|
+
:password => password,
|
23
|
+
:host => host
|
24
|
+
)
|
25
|
+
|
26
|
+
# Copied from ActiveRecord's test suite
|
27
|
+
ActiveRecord::Base.connection.class.class_eval do
|
28
|
+
IGNORED_SQL = [
|
29
|
+
/^PRAGMA/, /^SELECT currval/, /^SELECT CAST/, /^SELECT @@IDENTITY/,
|
30
|
+
/^SELECT @@ROWCOUNT/, /^SHOW FIELDS/
|
31
|
+
]
|
32
|
+
|
33
|
+
def execute_with_query_record(sql, name = nil, &block)
|
34
|
+
$queries_executed ||= []
|
35
|
+
$queries_executed << sql unless IGNORED_SQL.any? { |r| sql =~ r }
|
36
|
+
execute_without_query_record(sql, name, &block)
|
37
|
+
end
|
38
|
+
|
39
|
+
alias_method_chain :execute, :query_record
|
40
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
Alpha.create :name => "one", :value => 1, :cost => 1.51, :created_on => 1.day.ago.to_date, :created_at => 1.day.ago
|
2
|
+
Alpha.create :name => "two", :value => 2, :cost => 2.52, :created_on => 2.day.ago.to_date, :created_at => 2.day.ago
|
3
|
+
Alpha.create :name => "three", :value => 3, :cost => 3.53, :created_on => 3.day.ago.to_date, :created_at => 3.day.ago
|
4
|
+
Alpha.create :name => "four", :value => 4, :cost => 4.54, :created_on => 4.day.ago.to_date, :created_at => 4.day.ago
|
5
|
+
Alpha.create :name => "five", :value => 5, :cost => 5.55, :created_on => 5.day.ago.to_date, :created_at => 5.day.ago
|
6
|
+
Alpha.create :name => "six", :value => 6, :cost => 6.56, :created_on => 6.day.ago.to_date, :created_at => 6.day.ago
|
7
|
+
Alpha.create :name => "seven", :value => 7, :cost => 7.57, :created_on => 7.day.ago.to_date, :created_at => 7.day.ago
|
8
|
+
Alpha.create :name => "eight", :value => 8, :cost => 8.58, :created_on => 8.day.ago.to_date, :created_at => 8.day.ago
|
9
|
+
Alpha.create :name => "nine", :value => 9, :cost => 9.59, :created_on => 9.day.ago.to_date, :created_at => 9.day.ago
|
10
|
+
Alpha.create :name => "ten", :value => 10, :cost => 10.50, :created_on => 10.day.ago.to_date, :created_at => 10.day.ago
|
@@ -0,0 +1 @@
|
|
1
|
+
Author.create :name => "William Shakespeare"
|
@@ -0,0 +1,10 @@
|
|
1
|
+
Beta.create :name => "one", :value => 1
|
2
|
+
Beta.create :name => "two", :value => 2
|
3
|
+
Beta.create :name => "three", :value => 3
|
4
|
+
Beta.create :name => "four", :value => 4
|
5
|
+
Beta.create :name => "five", :value => 5
|
6
|
+
Beta.create :name => "six", :value => 6
|
7
|
+
Beta.create :name => "seven", :value => 7
|
8
|
+
Beta.create :name => "eight", :value => 8
|
9
|
+
Beta.create :name => "nine", :value => 9
|
10
|
+
Beta.create :name => "ten", :value => 10
|
@@ -0,0 +1 @@
|
|
1
|
+
Category.create :name => "hello"
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
Comment.create(
|
3
|
+
:name => "Pat",
|
4
|
+
:content => "+1",
|
5
|
+
:post_id => 1,
|
6
|
+
:category_id => 1
|
7
|
+
).update_attribute(:created_at, Time.utc(2001, 01, 01))
|
8
|
+
|
9
|
+
Comment.create(
|
10
|
+
:name => "Menno",
|
11
|
+
:content => "Second post!",
|
12
|
+
:post_id => 1,
|
13
|
+
:category_id => 1
|
14
|
+
)
|
15
|
+
|
16
|
+
Comment.create :name => 'A', :post_id => 1, :content => 'Es un hecho establecido hace demasiado tiempo que un lector se distraerá con el contenido del texto', :category_id => 1
|
17
|
+
Comment.create :name => 'B', :post_id => 1, :content => 'de un sitio mientras que mira su diseño. El punto de usar Lorem Ipsum es que tiene una distribución', :category_id => 1
|
18
|
+
Comment.create :name => 'C', :post_id => 1, :content => 'más o menos normal de las letras, al contrario de usar textos como por ejemplo "Contenido aquí', :category_id => 1
|
19
|
+
Comment.create :name => 'D', :post_id => 1, :content => 'contenido aquí". Estos textos hacen parecerlo un español que se puede leer. Muchos paquetes de', :category_id => 1
|
20
|
+
Comment.create :name => 'E', :post_id => 1, :content => 'autoedición y editores de páginas web usan el Lorem Ipsum como su texto por defecto, y al hacer una', :category_id => 1
|
21
|
+
Comment.create :name => 'F', :post_id => 1, :content => 'búsqueda de "Lorem Ipsum" va a dar por resultado muchos sitios web que usan este texto si se', :category_id => 1
|
22
|
+
|
23
|
+
# The one we'll really want to find via Sphinx search
|
24
|
+
Comment.create :name => 'G', :post_id => 1, :content => 'Turtle', :category_id => 1
|