rails-carrot 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest CHANGED
@@ -7,3 +7,4 @@ lib/carrot/extend_server.rb
7
7
  lib/carrot/rails.rb
8
8
  lib/carrot/server.rb
9
9
  lib/carrot/util/timeout.rb
10
+ rails-carrot.gemspec
data/README CHANGED
@@ -1,12 +1,13 @@
1
1
  You can use carrot with celerity, or another driver.
2
2
 
3
- 1. gem 'carrot'
3
+ 1. gem 'rails-carrot', :require => 'carrot'
4
4
 
5
5
  2. add a celerity_helper
6
+ /spec/celerity_helper.rb
6
7
 
7
8
  3. Add some code in celerity_helper
8
9
  require 'database_cleaner'
9
- require 'celerity'
10
+ require 'celerity' # You can change driver
10
11
  require 'carrot'
11
12
 
12
13
  ENV["RAILS_ENV"] = 'celerity' # You can change it with your enviroment
@@ -28,9 +29,8 @@ Carrot.configure do |config|
28
29
  config.run_server = true
29
30
  end
30
31
  Carrot.register_driver(Celerity::Browser.new)
31
- Carrot.boot
32
32
 
33
- c) Local, server with external ruby
33
+ c) Local, server with external ruby, You should use jruby to run RSpec.
34
34
 
35
35
  Carrot.configure do |config|
36
36
  config.run_server = true
@@ -41,7 +41,6 @@ Carrot.configure do |config|
41
41
  # config.server_debug = true
42
42
  end
43
43
  Carrot.register_driver(Celerity::Browser.new)
44
- Carrot.boot
45
44
 
46
45
  RSpec.configure do |config|
47
46
  DatabaseCleaner.strategy = :truncation
@@ -52,7 +51,6 @@ RSpec.configure do |config|
52
51
  end
53
52
 
54
53
  config.after :all do
55
- Carrot.shutdown # shutdown server
56
54
  DatabaseCleaner.clean
57
55
  end
58
56
 
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('rails-carrot', '1.0.0') do |p|
5
+ Echoe.new('rails-carrot', '1.0.1') do |p|
6
6
  p.description = "Carrot can make QA test easy with any integration test gem."
7
7
  p.url = "http://github.com/sloanwu/carrot.git"
8
8
  p.author = "Sloan Wu"
@@ -31,12 +31,8 @@ module Carrot
31
31
  #
32
32
  # === Configurable options
33
33
  #
34
- # [asset_root = String] Where static assets are located, used by save_and_open_page
35
34
  # [app_host = String] The default host to use when giving a relative URL to visit
36
35
  # [run_server = Boolean] Whether to start a Rack server for the given Rack app (Default: true)
37
- # [default_selector = :css/:xpath] Methods which take a selector use the given type by default (Default: CSS)
38
- # [default_wait_time = Integer] The number of seconds to wait for asynchronous processes to finish (Default: 2)
39
- # [ignore_hidden_elements = Boolean] Whether to ignore hidden elements on the page (Default: false)
40
36
  #
41
37
 
42
38
  def configure
@@ -49,6 +45,7 @@ module Carrot
49
45
 
50
46
  def register_driver(obj)
51
47
  @driver = obj
48
+ Carrot.boot
52
49
  end
53
50
 
54
51
  def boot
@@ -4,24 +4,42 @@ require 'uri'
4
4
  require 'net/http'
5
5
  require 'rack'
6
6
  import java.lang.Runtime
7
+ import java.lang.Runnable
7
8
  import java.io.InputStreamReader
8
9
  import java.io.BufferedReader
9
10
 
10
11
  module Carrot
11
12
  class ExtendServer
12
13
  attr_accessor :server_process, :shutdown_process
13
-
14
+
15
+ class ShutdownHook
16
+ include Runnable
17
+ def initialize( &block)
18
+ super()
19
+ @block=block
20
+ end
21
+ def run
22
+ @block[]
23
+ end
24
+ end
25
+
26
+ def self.at_exit( &block)
27
+ hook = ShutdownHook.new( &block)
28
+ Runtime.getRuntime().addShutdownHook(java.lang.Thread.new( hook ))
29
+ end
30
+
14
31
  def run()
15
32
  Thread.new do
16
33
  command = ["/bin/bash","-c", "cd #{Carrot.project_path} ; #{Carrot.rails_command}"].to_java(java.lang.String)
17
34
  begin
18
- @server_process = Runtime.getRuntime().exec(command);
35
+ @server_process = Runtime.getRuntime().exec(command)
19
36
  if Carrot.server_debug
20
37
  buf = BufferedReader.new(InputStreamReader.new(@server_process.get_input_stream))
21
38
  while line = buf.readLine()
22
39
  puts line
23
40
  end
24
41
  end
42
+ ExtendServer.at_exit{ Carrot.shutdown }
25
43
  @server_process.wait_for
26
44
  rescue Exception => e
27
45
  puts e
@@ -35,7 +53,7 @@ module Carrot
35
53
  Thread.new do
36
54
  command = ["/bin/bash","-c", "cd #{Carrot.project_path} ; kill `cat #{Carrot.project_path}/tmp/pids/server.pid`"].to_java(java.lang.String)
37
55
  begin
38
- @shutdown_process = Runtime.getRuntime().exec(command);
56
+ @shutdown_process = Runtime.getRuntime().exec(command)
39
57
  @shutdown_process.wait_for
40
58
  @shutdown_process.destroy
41
59
  rescue Exception => e
@@ -59,6 +59,7 @@ module Carrot
59
59
  require 'carrot/extend_server'
60
60
  Carrot.external_server = ExtendServer.new
61
61
  Carrot.external_server.run
62
+
62
63
  elsif @app
63
64
  @port = Carrot::Server.ports[@app.object_id]
64
65
 
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{rails-carrot}
5
- s.version = "1.0.0"
5
+ s.version = "1.0.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Sloan Wu"]
9
- s.date = %q{2010-11-02}
9
+ s.date = %q{2010-11-03}
10
10
  s.description = %q{Carrot can make QA test easy with any integration test gem.}
11
11
  s.email = %q{sloanwu@gmail.com}
12
12
  s.extra_rdoc_files = ["README", "lib/carrot.rb", "lib/carrot/extend_server.rb", "lib/carrot/rails.rb", "lib/carrot/server.rb", "lib/carrot/util/timeout.rb"]
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 0
9
- version: 1.0.0
8
+ - 1
9
+ version: 1.0.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Sloan Wu
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-11-02 00:00:00 +08:00
17
+ date: 2010-11-03 00:00:00 +08:00
18
18
  default_executable:
19
19
  dependencies: []
20
20