forked from pat/thinking-sphinx
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
162 additions
and
43 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,6 +3,6 @@ pkg | |
coverage | ||
*.tmproj | ||
rdoc | ||
spec/fixtures/database.yml | ||
database.yml | ||
tmp | ||
*.gem |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
default: "--require features/support/env.rb --require features/support/db/mysql.rb --require features/support/db/active_record.rb --require features/support/post_database.rb --require features/step_definitions/alpha_steps.rb --require features/step_definitions/beta_steps.rb --require features/step_definitions/common_steps.rb --require features/step_definitions/datetime_delta_steps.rb --require features/step_definitions/delayed_delta_indexing_steps.rb --require features/step_definitions/extensible_delta_indexing_steps.rb --require features/step_definitions/facet_steps.rb --require features/step_definitions/find_arguments_steps.rb --require features/step_definitions/gamma_steps.rb --require features/step_definitions/scope_steps.rb --require features/step_definitions/search_steps.rb --require features/step_definitions/sphinx_steps.rb" | ||
default: "--require features/support/env.rb --require features/step_definitions/alpha_steps.rb --require features/step_definitions/beta_steps.rb --require features/step_definitions/common_steps.rb --require features/step_definitions/datetime_delta_steps.rb --require features/step_definitions/delayed_delta_indexing_steps.rb --require features/step_definitions/extensible_delta_indexing_steps.rb --require features/step_definitions/facet_steps.rb --require features/step_definitions/find_arguments_steps.rb --require features/step_definitions/gamma_steps.rb --require features/step_definitions/scope_steps.rb --require features/step_definitions/search_steps.rb --require features/step_definitions/sphinx_steps.rb" | ||
|
||
mysql: "--require features/support/env.rb --require features/support/db/mysql.rb --require features/support/db/active_record.rb --require features/support/post_database.rb --require features/step_definitions/alpha_steps.rb --require features/step_definitions/beta_steps.rb --require features/step_definitions/common_steps.rb --require features/step_definitions/datetime_delta_steps.rb --require features/step_definitions/delayed_delta_indexing_steps.rb --require features/step_definitions/extensible_delta_indexing_steps.rb --require features/step_definitions/facet_steps.rb --require features/step_definitions/find_arguments_steps.rb --require features/step_definitions/gamma_steps.rb --require features/step_definitions/scope_steps.rb --require features/step_definitions/search_steps.rb --require features/step_definitions/sphinx_steps.rb features/alternate_primary_key.feature features/attribute_transformation.feature features/attribute_updates.feature features/datetime_deltas.feature features/delayed_delta_indexing.feature features/deleting_instances.feature features/direct_attributes.feature features/excerpts.feature features/extensible_delta_indexing.feature features/facets.feature features/facets_across_model.feature features/handling_edits.feature features/retry_stale_indexes.feature features/searching_across_models.feature features/searching_by_model.feature features/searching_with_find_arguments.feature features/sphinx_detection.feature features/sphinx_scopes.feature features/sti_searching.feature" | ||
mysql: "--require features/support/env.rb --require features/step_definitions/alpha_steps.rb --require features/step_definitions/beta_steps.rb --require features/step_definitions/common_steps.rb --require features/step_definitions/datetime_delta_steps.rb --require features/step_definitions/delayed_delta_indexing_steps.rb --require features/step_definitions/extensible_delta_indexing_steps.rb --require features/step_definitions/facet_steps.rb --require features/step_definitions/find_arguments_steps.rb --require features/step_definitions/gamma_steps.rb --require features/step_definitions/scope_steps.rb --require features/step_definitions/search_steps.rb --require features/step_definitions/sphinx_steps.rb features/alternate_primary_key.feature features/attribute_transformation.feature features/attribute_updates.feature features/datetime_deltas.feature features/delayed_delta_indexing.feature features/deleting_instances.feature features/direct_attributes.feature features/excerpts.feature features/extensible_delta_indexing.feature features/facets.feature features/facets_across_model.feature features/handling_edits.feature features/retry_stale_indexes.feature features/searching_across_models.feature features/searching_by_model.feature features/searching_with_find_arguments.feature features/sphinx_detection.feature features/sphinx_scopes.feature features/sti_searching.feature" | ||
|
||
postgresql: "--require features/support/env.rb --require features/support/db/postgresql.rb --require features/support/db/active_record.rb --require features/support/post_database.rb --require features/step_definitions/alpha_steps.rb --require features/step_definitions/beta_steps.rb --require features/step_definitions/common_steps.rb --require features/step_definitions/datetime_delta_steps.rb --require features/step_definitions/delayed_delta_indexing_steps.rb --require features/step_definitions/extensible_delta_indexing_steps.rb --require features/step_definitions/facet_steps.rb --require features/step_definitions/find_arguments_steps.rb --require features/step_definitions/gamma_steps.rb --require features/step_definitions/scope_steps.rb --require features/step_definitions/search_steps.rb --require features/step_definitions/sphinx_steps.rb features/alternate_primary_key.feature features/attribute_transformation.feature features/attribute_updates.feature features/datetime_deltas.feature features/delayed_delta_indexing.feature features/deleting_instances.feature features/direct_attributes.feature features/excerpts.feature features/extensible_delta_indexing.feature features/facets.feature features/facets_across_model.feature features/handling_edits.feature features/retry_stale_indexes.feature features/searching_across_models.feature features/searching_by_model.feature features/searching_with_find_arguments.feature features/sphinx_detection.feature features/sphinx_scopes.feature features/sti_searching.feature" | ||
postgresql: "--require features/support/env.rb --require features/step_definitions/alpha_steps.rb --require features/step_definitions/beta_steps.rb --require features/step_definitions/common_steps.rb --require features/step_definitions/datetime_delta_steps.rb --require features/step_definitions/delayed_delta_indexing_steps.rb --require features/step_definitions/extensible_delta_indexing_steps.rb --require features/step_definitions/facet_steps.rb --require features/step_definitions/find_arguments_steps.rb --require features/step_definitions/gamma_steps.rb --require features/step_definitions/scope_steps.rb --require features/step_definitions/search_steps.rb --require features/step_definitions/sphinx_steps.rb features/alternate_primary_key.feature features/attribute_transformation.feature features/attribute_updates.feature features/datetime_deltas.feature features/delayed_delta_indexing.feature features/deleting_instances.feature features/direct_attributes.feature features/excerpts.feature features/extensible_delta_indexing.feature features/facets.feature features/facets_across_model.feature features/handling_edits.feature features/retry_stale_indexes.feature features/searching_across_models.feature features/searching_by_model.feature features/searching_with_find_arguments.feature features/sphinx_detection.feature features/sphinx_scopes.feature features/sti_searching.feature" |
This file was deleted.
Oops, something went wrong.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
require 'cucumber/thinking_sphinx/sql_logger' | ||
|
||
module Cucumber | ||
module ThinkingSphinx | ||
class InternalWorld | ||
attr_accessor :temporary_directory, :migrations_directory, | ||
:models_directory, :fixtures_directory, :database_file | ||
attr_accessor :adapter, :database, :username, | ||
:password, :host | ||
|
||
def initialize | ||
@temporary_directory = "#{Dir.pwd}/tmp" | ||
@migrations_directory = "features/support/db/migrations" | ||
@models_directory = "features/support/models" | ||
@fixtures_directory = "features/support/db/fixtures" | ||
@database_file = "features/support/database.yml" | ||
|
||
@adapter = 'mysql' | ||
@database = 'thinking_sphinx' | ||
@username = 'thinking_sphinx' | ||
# @password = 'thinking_sphinx' | ||
@host = 'localhost' | ||
end | ||
|
||
def setup | ||
make_temporary_directory | ||
|
||
configure_cleanup | ||
configure_thinking_sphinx | ||
configure_database | ||
configure_active_record | ||
|
||
prepare_data | ||
setup_sphinx | ||
|
||
self | ||
end | ||
|
||
private | ||
|
||
def config | ||
@config ||= ::ThinkingSphinx::Configuration.instance | ||
end | ||
|
||
def make_temporary_directory | ||
FileUtils.mkdir_p temporary_directory | ||
Dir["#{temporary_directory}/*"].each do |file| | ||
FileUtils.rm_rf file | ||
end | ||
end | ||
|
||
def configure_thinking_sphinx | ||
config.config_file = "#{temporary_directory}/sphinx.conf" | ||
config.searchd_log_file = "#{temporary_directory}/searchd.log" | ||
config.query_log_file = "#{temporary_directory}/searchd.query.log" | ||
config.pid_file = "#{temporary_directory}/searchd.pid" | ||
config.searchd_file_path = "#{temporary_directory}/indexes/" | ||
|
||
::ThinkingSphinx.suppress_delta_output = true | ||
end | ||
|
||
def configure_cleanup | ||
Kernel.at_exit do | ||
::ThinkingSphinx::Configuration.instance.controller.stop | ||
sleep(0.5) # Ensure Sphinx has shut down completely | ||
ActiveRecord::Base.logger.close | ||
end | ||
end | ||
|
||
def configure_database | ||
ActiveRecord::Base.establish_connection database_settings | ||
end | ||
|
||
def yaml_database_settings | ||
return {} unless File.exist?(@database_file) | ||
|
||
YAML.load open(@database_file) | ||
end | ||
|
||
def database_settings | ||
yaml = yaml_database_settings | ||
{ | ||
:adapter => @adapter, | ||
:database => yaml['database'] || @database, | ||
:username => yaml['username'] || @username, | ||
:password => yaml['password'] || @password, | ||
:host => yaml['host'] || @host | ||
} | ||
end | ||
|
||
def configure_active_record | ||
ActiveRecord::Base.logger = Logger.new( | ||
open("#{temporary_directory}/active_record.log", "a") | ||
) | ||
|
||
ActiveRecord::Base.connection.class.send( | ||
:include, Cucumber::ThinkingSphinx::SqlLogger | ||
) | ||
end | ||
|
||
def prepare_data | ||
::ThinkingSphinx.deltas_enabled = false | ||
|
||
load_files migrations_directory | ||
load_files models_directory | ||
load_files fixtures_directory | ||
|
||
::ThinkingSphinx.deltas_enabled = true | ||
end | ||
|
||
def load_files(path) | ||
Dir["#{path}/*.rb"].each do |file| | ||
require file.gsub(/\.rb$/, '') | ||
end | ||
end | ||
|
||
def setup_sphinx | ||
FileUtils.mkdir_p config.searchd_file_path | ||
|
||
config.build | ||
config.controller.index | ||
config.controller.start | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
module Cucumber | ||
module ThinkingSphinx | ||
module SqlLogger | ||
def self.included(base) | ||
base.send :alias_method_chain, :execute, :query_record | ||
end | ||
|
||
IGNORED_SQL = [ | ||
/^PRAGMA/, /^SELECT currval/, /^SELECT CAST/, /^SELECT @@IDENTITY/, | ||
/^SELECT @@ROWCOUNT/, /^SHOW FIELDS/ | ||
] | ||
|
||
def execute_with_query_record(sql, name = nil, &block) | ||
$queries_executed ||= [] | ||
$queries_executed << sql unless IGNORED_SQL.any? { |r| sql =~ r } | ||
execute_without_query_record(sql, name, &block) | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters