fletcherm-culerity 0.2.5

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 (116) hide show
  1. data/.gitignore +6 -0
  2. data/CHANGES.md +7 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README.md +102 -0
  5. data/Rakefile +47 -0
  6. data/VERSION.yml +5 -0
  7. data/culerity.gemspec +165 -0
  8. data/features/fixtures/jquery +4376 -0
  9. data/features/fixtures/sample_feature +14 -0
  10. data/features/installing_culerity.feature +36 -0
  11. data/features/running_cucumber_without_explicitly_running_external_services.feature +23 -0
  12. data/features/step_definitions/common_steps.rb +175 -0
  13. data/features/step_definitions/culerity_setup_steps.rb +7 -0
  14. data/features/step_definitions/jruby_steps.rb +11 -0
  15. data/features/step_definitions/rails_setup_steps.rb +36 -0
  16. data/features/support/common.rb +32 -0
  17. data/features/support/env.rb +24 -0
  18. data/features/support/matchers.rb +11 -0
  19. data/init.rb +1 -0
  20. data/lib/culerity.rb +44 -0
  21. data/lib/culerity/celerity_server.rb +81 -0
  22. data/lib/culerity/jruby_runner.rb +13 -0
  23. data/lib/culerity/remote_browser_proxy.rb +58 -0
  24. data/lib/culerity/remote_object_proxy.rb +76 -0
  25. data/rails/init.rb +1 -0
  26. data/rails_generators/culerity/culerity_generator.rb +28 -0
  27. data/rails_generators/culerity/templates/config/environments/culerity_continuousintegration.rb +28 -0
  28. data/rails_generators/culerity/templates/config/environments/culerity_development.rb +17 -0
  29. data/rails_generators/culerity/templates/features/step_definitions/culerity_steps.rb +109 -0
  30. data/rails_generators/culerity/templates/features/support/env.rb +9 -0
  31. data/rails_generators/culerity/templates/lib/tasks/culerity.rake +38 -0
  32. data/rails_generators/culerity/templates/public/javascripts/culerity.js +27 -0
  33. data/script/console +10 -0
  34. data/script/destroy +14 -0
  35. data/script/generate +14 -0
  36. data/spec/celerity_server_spec.rb +106 -0
  37. data/spec/culerity_spec.rb +33 -0
  38. data/spec/jruby_runner_spec.rb +12 -0
  39. data/spec/remote_browser_proxy_spec.rb +62 -0
  40. data/spec/remote_object_proxy_spec.rb +63 -0
  41. data/spec/spec_helper.rb +3 -0
  42. data/vendor/gems/celerity-0.7.6/HISTORY +111 -0
  43. data/vendor/gems/celerity-0.7.6/LICENSE +621 -0
  44. data/vendor/gems/celerity-0.7.6/README.rdoc +80 -0
  45. data/vendor/gems/celerity-0.7.6/Rakefile +11 -0
  46. data/vendor/gems/celerity-0.7.6/VERSION.yml +5 -0
  47. data/vendor/gems/celerity-0.7.6/celerity.gemspec +120 -0
  48. data/vendor/gems/celerity-0.7.6/lib/celerity.rb +77 -0
  49. data/vendor/gems/celerity-0.7.6/lib/celerity/browser.rb +893 -0
  50. data/vendor/gems/celerity-0.7.6/lib/celerity/clickable_element.rb +73 -0
  51. data/vendor/gems/celerity-0.7.6/lib/celerity/collections.rb +156 -0
  52. data/vendor/gems/celerity-0.7.6/lib/celerity/container.rb +767 -0
  53. data/vendor/gems/celerity-0.7.6/lib/celerity/default_viewer.rb +14 -0
  54. data/vendor/gems/celerity-0.7.6/lib/celerity/disabled_element.rb +40 -0
  55. data/vendor/gems/celerity-0.7.6/lib/celerity/element.rb +298 -0
  56. data/vendor/gems/celerity-0.7.6/lib/celerity/element_collection.rb +107 -0
  57. data/vendor/gems/celerity-0.7.6/lib/celerity/element_locator.rb +159 -0
  58. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/button.rb +54 -0
  59. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/file_field.rb +29 -0
  60. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/form.rb +33 -0
  61. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/frame.rb +86 -0
  62. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/image.rb +89 -0
  63. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/label.rb +16 -0
  64. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/link.rb +43 -0
  65. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/meta.rb +14 -0
  66. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/non_control_elements.rb +116 -0
  67. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/option.rb +38 -0
  68. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/radio_check.rb +114 -0
  69. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/select_list.rb +147 -0
  70. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/table.rb +153 -0
  71. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/table_cell.rb +36 -0
  72. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/table_elements.rb +42 -0
  73. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/table_row.rb +49 -0
  74. data/vendor/gems/celerity-0.7.6/lib/celerity/elements/text_field.rb +168 -0
  75. data/vendor/gems/celerity-0.7.6/lib/celerity/exception.rb +83 -0
  76. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit.rb +64 -0
  77. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/commons-codec-1.4.jar +0 -0
  78. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/commons-collections-3.2.1.jar +0 -0
  79. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/commons-httpclient-3.1.jar +0 -0
  80. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/commons-io-1.4.jar +0 -0
  81. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/commons-lang-2.4.jar +0 -0
  82. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/commons-logging-1.1.1.jar +0 -0
  83. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/cssparser-0.9.5.jar +0 -0
  84. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/htmlunit-2.7-SNAPSHOT.jar +0 -0
  85. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/htmlunit-core-js-2.7-SNAPSHOT.jar +0 -0
  86. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/nekohtml-1.9.14-20091130.152932-3.jar +0 -0
  87. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/sac-1.3.jar +0 -0
  88. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/serializer-2.7.1.jar +0 -0
  89. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/xalan-2.7.1.jar +0 -0
  90. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/xercesImpl-2.9.1.jar +0 -0
  91. data/vendor/gems/celerity-0.7.6/lib/celerity/htmlunit/xml-apis-1.3.04.jar +0 -0
  92. data/vendor/gems/celerity-0.7.6/lib/celerity/identifier.rb +28 -0
  93. data/vendor/gems/celerity-0.7.6/lib/celerity/ignoring_web_connection.rb +15 -0
  94. data/vendor/gems/celerity-0.7.6/lib/celerity/input_element.rb +25 -0
  95. data/vendor/gems/celerity-0.7.6/lib/celerity/javascript_debugger.rb +32 -0
  96. data/vendor/gems/celerity-0.7.6/lib/celerity/listener.rb +143 -0
  97. data/vendor/gems/celerity-0.7.6/lib/celerity/resources/no_viewer.png +0 -0
  98. data/vendor/gems/celerity-0.7.6/lib/celerity/short_inspect.rb +20 -0
  99. data/vendor/gems/celerity-0.7.6/lib/celerity/util.rb +126 -0
  100. data/vendor/gems/celerity-0.7.6/lib/celerity/version.rb +3 -0
  101. data/vendor/gems/celerity-0.7.6/lib/celerity/viewer_connection.rb +89 -0
  102. data/vendor/gems/celerity-0.7.6/lib/celerity/watir_compatibility.rb +70 -0
  103. data/vendor/gems/celerity-0.7.6/lib/celerity/xpath_support.rb +48 -0
  104. data/vendor/gems/celerity-0.7.6/tasks/benchmark.rake +4 -0
  105. data/vendor/gems/celerity-0.7.6/tasks/check.rake +24 -0
  106. data/vendor/gems/celerity-0.7.6/tasks/clean.rake +3 -0
  107. data/vendor/gems/celerity-0.7.6/tasks/fix.rake +25 -0
  108. data/vendor/gems/celerity-0.7.6/tasks/jar.rake +55 -0
  109. data/vendor/gems/celerity-0.7.6/tasks/jeweler.rake +26 -0
  110. data/vendor/gems/celerity-0.7.6/tasks/rdoc.rake +4 -0
  111. data/vendor/gems/celerity-0.7.6/tasks/snapshot.rake +22 -0
  112. data/vendor/gems/celerity-0.7.6/tasks/spec.rake +26 -0
  113. data/vendor/gems/celerity-0.7.6/tasks/website.rake +10 -0
  114. data/vendor/gems/celerity-0.7.6/tasks/yard.rake +16 -0
  115. data/vendor/jruby/jruby-complete-1.4.0.jar +0 -0
  116. metadata +194 -0
@@ -0,0 +1,13 @@
1
+ module Culerity
2
+ class JRubyRunner
3
+ def self.cmd
4
+ jruby_complete = "#{File.dirname(__FILE__)}/../../vendor/jruby/jruby-complete-1.4.0.jar"
5
+ celerity = "#{File.dirname(__FILE__)}/../../vendor/gems/celerity-0.7.6/lib"
6
+ "java -Xmx500m -Xss1024k -jar #{jruby_complete} -I#{celerity}"
7
+ end
8
+
9
+ def self.run(command_to_run)
10
+ `#{cmd} #{command_to_run}`
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,58 @@
1
+ module Culerity
2
+
3
+ class RemoteBrowserProxy < RemoteObjectProxy
4
+ def initialize(io, browser_options = {})
5
+ @io = io
6
+ @remote_object_id = "celerity".inspect
7
+ @remote_object_id = new_browser(browser_options).inspect
8
+ end
9
+
10
+ #
11
+ # Calls the block until it returns true or +time_to_wait+ is reached.
12
+ # +time_to_wait+ is 30 seconds by default
13
+ #
14
+ # Returns true upon success
15
+ # Raises Timeout::Error when +time_to_wait+ is reached.
16
+ #
17
+ def wait_until time_to_wait=30, &block
18
+ Timeout.timeout(time_to_wait) do
19
+ until block.call
20
+ sleep 0.1
21
+ end
22
+ end
23
+ true
24
+ end
25
+
26
+ #
27
+ # Calls the block until it doesn't return true or +time_to_wait+ is reached.
28
+ # +time_to_wait+ is 30 seconds by default
29
+ #
30
+ # Returns true upon success
31
+ # Raises Timeout::Error when +time_to_wait+ is reached.
32
+ #
33
+ def wait_while time_to_wait=30, &block
34
+ Timeout.timeout(time_to_wait) do
35
+ while block.call
36
+ sleep 0.1
37
+ end
38
+ end
39
+ true
40
+ end
41
+
42
+
43
+ #
44
+ # Specify whether to accept or reject all confirm js dialogs
45
+ # for the code in the block that's run.
46
+ #
47
+ def confirm(bool, &block)
48
+ blk = "lambda { #{bool} }"
49
+
50
+ self.send_remote(:add_listener, :confirm) { blk }
51
+ block.call
52
+ self.send_remote(:remove_listener, :confirm) { blk }
53
+ end
54
+
55
+ end
56
+
57
+
58
+ end
@@ -0,0 +1,76 @@
1
+ module Culerity
2
+
3
+ class CulerityException < StandardError
4
+ def initialize(message, backtrace)
5
+ super message
6
+ #self.backtrace = backtrace
7
+ end
8
+ end
9
+
10
+ class RemoteObjectProxy
11
+ def initialize(remote_object_id, io)
12
+ @remote_object_id = remote_object_id
13
+ @io = io
14
+ end
15
+
16
+ #
17
+ # Commonly used to get the HTML id attribute
18
+ # Use `object_id` to get the local objects' id.
19
+ #
20
+ def id
21
+ send_remote(:id)
22
+ end
23
+
24
+ def method_missing(name, *args)
25
+ send_remote(name, *args)
26
+ end
27
+
28
+ #
29
+ # Calls the passed method on the remote object with any arguments specified.
30
+ # Behaves the same as <code>Object#send</code>.
31
+ #
32
+ # If you pass it a block then it will append the block as a "lambda { … }".
33
+ # If your block returns a lambda string ("lambda { … }") then it will be passed
34
+ # straight through, otherwise it will be wrapped in a lambda string before sending.
35
+ #
36
+ def send_remote(name, *args, &blk)
37
+ input = [remote_object_id, %Q{"#{name}"}, *args.map{|a| a.inspect}]
38
+ input << block_to_string(&blk) if block_given?
39
+ @io << "[#{input.join(", ")}]\n"
40
+ process_result @io.gets.to_s.strip
41
+ end
42
+
43
+ def exit
44
+ @io << '["_exit_"]'
45
+ end
46
+
47
+ private
48
+
49
+ def process_result(result)
50
+ res = eval result
51
+ if res.first == :return
52
+ res[1]
53
+ elsif res.first == :exception
54
+ raise CulerityException.new("#{res[1]}: #{res[2]}", res[3])
55
+ end
56
+ end
57
+
58
+ #
59
+ # Takes a block and either returns the result (if it returns "lambda { … }")
60
+ # or builds the lambda string with the result of the block in it.
61
+ #
62
+ # Returns a string in the format "lambda { … }"
63
+ #
64
+ def block_to_string &block
65
+ result = block.call.to_s
66
+ unless result.is_a?(String) && result[/^lambda \s* \{ .*? \}/x]
67
+ result = "lambda { #{result} }"
68
+ end
69
+ result
70
+ end
71
+
72
+ def remote_object_id
73
+ @remote_object_id
74
+ end
75
+ end
76
+ end
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'culerity'
@@ -0,0 +1,28 @@
1
+ class CulerityGenerator < Rails::Generator::Base
2
+
3
+ def manifest
4
+ record do |m|
5
+ m.directory 'features/step_definitions'
6
+ m.file 'features/step_definitions/culerity_steps.rb', 'features/step_definitions/culerity_steps.rb'
7
+ m.file 'features/support/env.rb', 'features/support/env.rb'
8
+ m.file 'config/environments/culerity_continuousintegration.rb', 'config/environments/culerity_continuousintegration.rb'
9
+ m.file 'config/environments/culerity_development.rb', 'config/environments/culerity_development.rb'
10
+
11
+ m.gsub_file 'config/database.yml', /cucumber:.*\n/, "cucumber: &CUCUMBER\n"
12
+
13
+ m.gsub_file 'config/database.yml', /\z/, "\nculerity_development:\n <<: *CUCUMBER"
14
+ m.gsub_file 'config/database.yml', /\z/, "\nculerity_continuousintegration:\n <<: *CUCUMBER"
15
+
16
+ m.file "lib/tasks/culerity.rake", "lib/tasks/culerity.rake"
17
+
18
+ m.file 'public/javascripts/culerity.js', 'public/javascripts/culerity.js'
19
+ end
20
+ end
21
+
22
+ protected
23
+
24
+ def banner
25
+ "Usage: #{$0} culerity"
26
+ end
27
+
28
+ end
@@ -0,0 +1,28 @@
1
+ # Settings specified here will take precedence over those in config/environment.rb
2
+
3
+ # The production environment is meant for finished, "live" apps.
4
+ # Code is not reloaded between requests
5
+ config.cache_classes = true
6
+
7
+ # Full error reports are disabled and caching is turned on
8
+ config.action_controller.consider_all_requests_local = false
9
+ config.action_controller.perform_caching = true
10
+ config.action_view.cache_template_loading = true
11
+
12
+ # See everything in the log (default is :info)
13
+ # config.log_level = :debug
14
+
15
+ # Use a different logger for distributed setups
16
+ # config.logger = SyslogLogger.new
17
+
18
+ # Use a different cache store in production
19
+ # config.cache_store = :mem_cache_store
20
+
21
+ # Enable serving of images, stylesheets, and javascripts from an asset server
22
+ # config.action_controller.asset_host = "http://assets.example.com"
23
+
24
+ # Disable delivery errors, bad email addresses will be ignored
25
+ # config.action_mailer.raise_delivery_errors = false
26
+
27
+ # Enable threaded mode
28
+ # config.threadsafe!
@@ -0,0 +1,17 @@
1
+ config.cache_classes = false
2
+
3
+ # Log error messages when you accidentally call methods on nil.
4
+ config.whiny_nils = true
5
+
6
+ # Show full error reports and disable caching
7
+ config.action_controller.consider_all_requests_local = true
8
+ config.action_controller.perform_caching = false
9
+ config.action_view.cache_template_loading = false
10
+
11
+ # Disable request forgery protection in test environment
12
+ config.action_controller.allow_forgery_protection = false
13
+
14
+ # Tell Action Mailer not to deliver emails to the real world.
15
+ # The :test delivery method accumulates sent emails in the
16
+ # ActionMailer::Base.deliveries array.
17
+ config.action_mailer.delivery_method = :test
@@ -0,0 +1,109 @@
1
+ require 'culerity'
2
+
3
+ Before do
4
+ $rails_server ||= Culerity::run_rails(:environment => 'culerity_development', :port => 3001)
5
+ $server ||= Culerity::run_server
6
+ $browser = Culerity::RemoteBrowserProxy.new $server, {:browser => :firefox3,
7
+ :javascript_exceptions => true,
8
+ :resynchronize => true,
9
+ :status_code_exceptions => true
10
+ }
11
+ $browser.log_level = :warning
12
+ @host = 'http://localhost:3001'
13
+ end
14
+
15
+ at_exit do
16
+ $browser.exit if $browser
17
+ $server.close if $server
18
+ Process.kill(6, $rails_server.pid.to_i) if $rails_server
19
+ end
20
+
21
+ When /I follow "([^\"]*)"/ do |link|
22
+ _link = [[:text, /^#{Regexp.escape(link)}$/], [:id, link], [:title, link]].map{|args| $browser.link(*args)}.find{|__link| __link.exist?}
23
+ raise "link \"#{link}\" not found" unless _link
24
+ _link.click
25
+ assert_successful_response
26
+ end
27
+
28
+ When /I press "([^\"]*)"/ do |button|
29
+ $browser.button(:text, button).click
30
+ assert_successful_response
31
+ end
32
+
33
+ When /I fill in "([^\"]*)" with "([^\"]*)"/ do |field, value|
34
+ find_by_label_or_id(:text_field, field).set(value)
35
+ end
36
+
37
+ When /I fill in "([^\"]*)" for "([^\"]*)"/ do |value, field|
38
+ find_by_label_or_id(:text_field, field).set(value)
39
+ end
40
+
41
+ When /I check "([^\"]*)"/ do |field|
42
+ find_by_label_or_id(:check_box, field).set(true)
43
+ end
44
+
45
+ When /^I uncheck "([^\"]*)"$/ do |field|
46
+ find_by_label_or_id(:check_box, field).set(true)
47
+ end
48
+
49
+ When /I select "([^\"]*)" from "([^\"]*)"/ do |value, field|
50
+ find_by_label_or_id(:select_list, field).select value
51
+ end
52
+
53
+ When /I choose "([^\"]*)"/ do |field|
54
+ find_by_label_or_id(:radio, field).set(true)
55
+ end
56
+
57
+ When /I go to (.+)/ do |path|
58
+ $browser.goto @host + path_to(path)
59
+ assert_successful_response
60
+ end
61
+
62
+ When /^I wait for the AJAX call to finish$/ do
63
+ $browser.wait_while do
64
+ begin
65
+ count = $browser.execute_script("window.running_ajax_calls").to_i
66
+ count.to_i > 0
67
+ rescue => e
68
+ if e.message.include?('HtmlunitCorejsJavascript::Undefined')
69
+ raise "For 'I wait for the AJAX call to finish' to work please include culerity.js after including jQuery. If you don't use jQuery please rewrite culerity.js accordingly."
70
+ else
71
+ raise(e)
72
+ end
73
+ end
74
+ end
75
+ end
76
+
77
+ Then /I should see "([^\"]*)"/ do |text|
78
+ # if we simply check for the browser.html content we don't find content that has been added dynamically, e.g. after an ajax call
79
+ div = $browser.div(:text, /#{text}/)
80
+ div.should be_exist
81
+ end
82
+
83
+ Then /I should not see "([^\"]*)"/ do |text|
84
+ div = $browser.div(:text, /#{text}/)
85
+ div.should_not be_exist
86
+ end
87
+
88
+ def find_by_label_or_id(element, attribute)
89
+ matchers = [[attribute, :id], [attribute, :name]]
90
+ matchers << [$browser.label(:text, attribute).for, :id] if $browser.label(:text, attribute).exist?
91
+ field = matchers.map{|_field, matcher| $browser.send(element, matcher, _field)}.find(&:exist?) || raise("#{element} not found using \"#{attribute}\"")
92
+ end
93
+
94
+ def assert_successful_response
95
+ status = $browser.page.web_response.status_code
96
+ if(status == 302 || status == 301)
97
+ location = $browser.page.web_response.get_response_header_value('Location')
98
+ puts "Being redirected to #{location}"
99
+ $browser.goto location
100
+ assert_successful_response
101
+ elsif status != 200
102
+ filename = "culerity-#{Time.now.to_i}.html"
103
+ File.open(RAILS_ROOT + "/tmp/#{filename}", "w") do |f|
104
+ f.write $browser.html
105
+ end
106
+ `open tmp/#{filename}`
107
+ raise "Browser returned Response Code #{$browser.page.web_response.status_code}"
108
+ end
109
+ end
@@ -0,0 +1,9 @@
1
+ ENV["RAILS_ENV"] ||= "culerity_development"
2
+ require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
3
+ require 'cucumber/rails/world'
4
+
5
+ Cucumber::Rails::World.use_transactional_fixtures = false
6
+ ActionController::Base.allow_rescue = false
7
+
8
+ require 'cucumber/formatter/unicode'
9
+ require 'cucumber/rails/rspec'
@@ -0,0 +1,38 @@
1
+ namespace 'culerity' do
2
+ namespace 'rails' do
3
+ desc "Starts a rails server for cucumber/culerity tests"
4
+ task :start do
5
+ port = ENV['PORT'] || 3001
6
+ environment = ENV["RAILS_ENV"] || 'culerity_development'
7
+ pid_file = RAILS_ROOT + "/tmp/culerity_rails_server.pid"
8
+ if File.exists?(pid_file)
9
+ puts "culerity rails server already running; if not, delete tmp/culerity_rails_server.pid and try again"
10
+ exit 1
11
+ end
12
+ rails_server = IO.popen("script/server -e #{environment} -p #{port}", 'r+')
13
+ File.open(pid_file, "w") { |file| file << rails_server.pid }
14
+ end
15
+
16
+ desc "Stops the running rails server for cucumber/culerity tests"
17
+ task :stop do
18
+ pid_file = RAILS_ROOT + "/tmp/culerity_rails_server.pid"
19
+ if File.exists?(pid_file)
20
+ pid = File.read(pid_file).to_i
21
+ Process.kill(6, pid)
22
+ File.delete(pid_file)
23
+ else
24
+ puts "No culerity rails server running. Doing nothing."
25
+ end
26
+ end
27
+
28
+ desc "Restarts the rails server for cucumber/culerity tests"
29
+ task :restart => [:stop, :start]
30
+ end
31
+
32
+ desc "Install required gems into jruby"
33
+ task :install do
34
+ jgem_cmd = `which jruby`.strip
35
+ raise "ERROR: You need to install jruby to use culerity and celerity." if jgem_cmd.blank?
36
+ sh "#{jgem_cmd} -S gem install celerity"
37
+ end
38
+ end
@@ -0,0 +1,27 @@
1
+ // this allows culerity to wait until all ajax requests have finished
2
+ jQuery(function($) {
3
+ var original_ajax = $.ajax;
4
+ var count_down = function(callback) {
5
+ return function() {
6
+ try {
7
+ if(callback) {
8
+ callback.apply(this, arguments);
9
+ };
10
+ } catch(e) {
11
+ window.running_ajax_calls -= 1;
12
+ throw(e);
13
+ }
14
+ window.running_ajax_calls -= 1;
15
+ }
16
+ };
17
+ window.running_ajax_calls = 0;
18
+
19
+ var ajax_with_count = function(options) {
20
+ window.running_ajax_calls += 1;
21
+ options.success = count_down(options.success);
22
+ options.error = count_down(options.error);
23
+ original_ajax(options);
24
+ };
25
+
26
+ $.ajax = ajax_with_count;
27
+ });
data/script/console ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ # File: script/console
3
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
+
5
+ libs = " -r irb/completion"
6
+ # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
+ # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/culerity.rb'}"
9
+ puts "Loading culerity gem"
10
+ exec "#{irb} #{libs} --simple-prompt"
data/script/destroy ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/destroy'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Destroy.new.run(ARGV)