spork 0.9.0-x86-mswin32 → 1.0.0rc0-x86-mswin32
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.
- data/Gemfile +3 -1
- data/README.rdoc +22 -18
- data/features/diagnostic_mode.feature +1 -2
- data/features/support/bundler_helpers.rb +2 -8
- data/features/support/env.rb +7 -94
- data/features/support/spork_world.rb +84 -0
- data/features/unknown_app_framework.feature +5 -7
- data/lib/spork/app_framework/unknown.rb +5 -1
- data/lib/spork/app_framework.rb +16 -30
- data/lib/spork/runner.rb +1 -1
- data/lib/spork/test/cucumber_helpers.rb +5 -0
- data/lib/spork/test/test_helpers.rb +2 -0
- data/lib/spork/test_framework.rb +9 -9
- data/lib/spork.rb +3 -10
- data/spec/spec_helper.rb +7 -88
- data/spec/spork/app_framework_spec.rb +0 -7
- data/spec/spork/diagnoser_spec.rb +0 -1
- data/spec/spork/test_framework_spec.rb +3 -3
- data/spec/support/fake_framework.rb +3 -1
- data/spec/support/should_include_a_string_like.rb +31 -0
- data/spec/support/test_io_streams.rb +17 -0
- data/spec/support/tmp_project_helpers.rb +30 -0
- metadata +26 -37
- data/assets/bootstrap.rb +0 -49
- data/features/cucumber_rails_integration.feature +0 -107
- data/features/gemfiles/rails3.0/Gemfile +0 -14
- data/features/gemfiles/rails3.0/Gemfile.lock +0 -139
- data/features/rails_delayed_loading_workarounds.feature +0 -177
- data/features/rspec_rails_integration.feature +0 -92
- data/features/steps/rails_steps.rb +0 -67
- data/lib/spork/app_framework/padrino.rb +0 -22
- data/lib/spork/app_framework/rails.rb +0 -82
- data/lib/spork/ext/rails-reloader.rb +0 -14
- data/lib/spork/gem_helpers.rb +0 -38
- data/spec/spork/app_framework/rails_spec.rb +0 -22
@@ -1,177 +0,0 @@
|
|
1
|
-
Feature: Rails Delayed Work arounds
|
2
|
-
To allow a rails developer to update as many parts of his application as possible without needing to restart Spork
|
3
|
-
Spork automatically tells rails to delay loading certain parts of the application until after the fork occurs
|
4
|
-
|
5
|
-
Background: Rails App with RSpec and Spork
|
6
|
-
|
7
|
-
Given I am in a fresh rails project named "test_rails_project"
|
8
|
-
And a file named "spec/spec_helper.rb" with:
|
9
|
-
"""
|
10
|
-
require 'rubygems'
|
11
|
-
require 'spork'
|
12
|
-
require 'spork/ext/ruby-debug'
|
13
|
-
|
14
|
-
Spork.prefork do
|
15
|
-
require File.dirname(__FILE__) + '/../config/environment.rb'
|
16
|
-
require 'rspec'
|
17
|
-
require 'rspec/rails'
|
18
|
-
end
|
19
|
-
|
20
|
-
Spork.each_run do
|
21
|
-
end
|
22
|
-
"""
|
23
|
-
And the application has a model, observer, route, and application helper
|
24
|
-
|
25
|
-
Given the following code appears in "config/routes.rb" after /routes\.draw/:
|
26
|
-
"""
|
27
|
-
resources :users
|
28
|
-
"""
|
29
|
-
Given a file named "app/helpers/application_helper.rb" with:
|
30
|
-
"""
|
31
|
-
require 'reverseatron'
|
32
|
-
module ApplicationHelper
|
33
|
-
include Reverseatron
|
34
|
-
end
|
35
|
-
"""
|
36
|
-
Given a file named "lib/reverseatron.rb" with:
|
37
|
-
"""
|
38
|
-
module Reverseatron
|
39
|
-
def reverse_text(txt)
|
40
|
-
txt.reverse
|
41
|
-
end
|
42
|
-
end
|
43
|
-
"""
|
44
|
-
Given a file named "app/controllers/users_controller.rb" with:
|
45
|
-
"""
|
46
|
-
class UsersController < ApplicationController
|
47
|
-
$loaded_stuff << 'UsersController'
|
48
|
-
def index
|
49
|
-
@users = []
|
50
|
-
end
|
51
|
-
end
|
52
|
-
"""
|
53
|
-
Given a file named "app/helpers/misc_helper.rb" with:
|
54
|
-
"""
|
55
|
-
module MiscHelper
|
56
|
-
def misc_helper_method
|
57
|
-
'hello miscellaneous'
|
58
|
-
end
|
59
|
-
end
|
60
|
-
"""
|
61
|
-
Given a file named "app/helpers/users_helper.rb" with:
|
62
|
-
"""
|
63
|
-
module UsersHelper
|
64
|
-
end
|
65
|
-
"""
|
66
|
-
Given a file named "app/views/users/index.html.erb" with:
|
67
|
-
"""
|
68
|
-
Original View
|
69
|
-
"""
|
70
|
-
Scenario: respecting custom autoload paths
|
71
|
-
Given the following code appears in "config/application.rb" after /class Application < Rails::Application/:
|
72
|
-
"""
|
73
|
-
config.autoload_paths << 'app/models/non_standard'
|
74
|
-
"""
|
75
|
-
|
76
|
-
And a file named "app/models/non_standard/boogie.rb" with:
|
77
|
-
"""
|
78
|
-
class Boogie
|
79
|
-
def boogie
|
80
|
-
'Boogie Robots!'
|
81
|
-
end
|
82
|
-
end
|
83
|
-
"""
|
84
|
-
And a file named "spec/models/non_standard/boogie_spec.rb" with:
|
85
|
-
"""
|
86
|
-
describe Boogie do
|
87
|
-
it 'knows how to boogie' do
|
88
|
-
Boogie.new.boogie.should include('Boogie')
|
89
|
-
puts 'BOOGIE!!!'
|
90
|
-
end
|
91
|
-
end
|
92
|
-
"""
|
93
|
-
When I fire up a spork instance with "spork rspec"
|
94
|
-
And I run rspec --drb spec/models/non_standard/boogie_spec.rb
|
95
|
-
Then the output should contain "BOOGIE!!!"
|
96
|
-
|
97
|
-
Scenario: within a view rendered by a controller, calling helper methods from an included module in ApplicationHelper
|
98
|
-
Given a file named "spec/controllers/users_controller_spec.rb" with:
|
99
|
-
"""
|
100
|
-
require "spec_helper"
|
101
|
-
describe UsersController do
|
102
|
-
render_views
|
103
|
-
it "renders a page, using a method inherited from ApplicationController" do
|
104
|
-
get :index
|
105
|
-
response.body.should_not include('Original View')
|
106
|
-
puts "Views are not being cached when rendering from a controller"
|
107
|
-
|
108
|
-
response.body.should include('listing users')
|
109
|
-
puts "Controller stack is functioning when rendering from a controller"
|
110
|
-
|
111
|
-
response.body.should include('hello miscellaneous')
|
112
|
-
puts "All helper modules were included when rendering from a controller"
|
113
|
-
end
|
114
|
-
end
|
115
|
-
"""
|
116
|
-
Given a file named "spec/views/index.html.erb_spec.rb" with:
|
117
|
-
"""
|
118
|
-
require "spec_helper"
|
119
|
-
describe "/users/index.html.erb" do
|
120
|
-
|
121
|
-
it "renders the view" do
|
122
|
-
render
|
123
|
-
rendered.should_not include('Original View')
|
124
|
-
puts "Views are not being cached when rendering directly"
|
125
|
-
|
126
|
-
rendered.should include('listing users')
|
127
|
-
puts "Controller stack is functioning when rendering directly"
|
128
|
-
|
129
|
-
rendered.should include('hello miscellaneous')
|
130
|
-
puts "All helper modules were included when rendering directly"
|
131
|
-
end
|
132
|
-
end
|
133
|
-
"""
|
134
|
-
When I fire up a spork instance with "spork rspec"
|
135
|
-
And the contents of "app/views/users/index.html.erb" are changed to:
|
136
|
-
"""
|
137
|
-
<%= reverse_text('listing users'.reverse) %>
|
138
|
-
<%= misc_helper_method rescue nil %>
|
139
|
-
<p>Here is a list of users</p>
|
140
|
-
"""
|
141
|
-
|
142
|
-
And I run rspec --drb spec/controllers/users_controller_spec.rb
|
143
|
-
Then the output should contain "Controller stack is functioning when rendering from a controller"
|
144
|
-
And the output should contain "Views are not being cached when rendering from a controller"
|
145
|
-
And the output should contain "All helper modules were included when rendering from a controller"
|
146
|
-
|
147
|
-
When I run rspec --drb spec/views/index.html.erb_spec.rb
|
148
|
-
Then the output should contain "Controller stack is functioning when rendering directly"
|
149
|
-
And the output should contain "Views are not being cached when rendering directly"
|
150
|
-
And the output should contain "All helper modules were included when rendering directly"
|
151
|
-
|
152
|
-
Given the contents of "app/helpers/application_helper.rb" are changed to:
|
153
|
-
"""
|
154
|
-
module ApplicationHelper
|
155
|
-
def make_it_loud(message)
|
156
|
-
message.upcase
|
157
|
-
end
|
158
|
-
end
|
159
|
-
"""
|
160
|
-
And the contents of "app/views/users/index.html.erb" are changed to:
|
161
|
-
"""
|
162
|
-
<%= make_it_loud('listing users') %>
|
163
|
-
"""
|
164
|
-
And the contents of "spec/controllers/users_controller_spec.rb" are changed to:
|
165
|
-
"""
|
166
|
-
require "spec_helper"
|
167
|
-
describe UsersController do
|
168
|
-
render_views
|
169
|
-
it "renders a page, using a method inherited from ApplicationController" do
|
170
|
-
get :index
|
171
|
-
response.body.should include('LISTING USERS')
|
172
|
-
puts "Helpers aren't being cached"
|
173
|
-
end
|
174
|
-
end
|
175
|
-
"""
|
176
|
-
When I run rspec --drb spec/controllers/users_controller_spec.rb
|
177
|
-
Then the output should contain "Helpers aren't being cached"
|
@@ -1,92 +0,0 @@
|
|
1
|
-
Feature: Rails Integration
|
2
|
-
To get a developer up and running quickly
|
3
|
-
Spork automatically integrates with rails
|
4
|
-
Providing default hooks and behaviors
|
5
|
-
|
6
|
-
Background: Rails App with RSpec and Spork
|
7
|
-
Given I am in a fresh rails project named "test_rails_project"
|
8
|
-
And a file named "spec/spec_helper.rb" with:
|
9
|
-
"""
|
10
|
-
require 'rubygems'
|
11
|
-
require 'spork'
|
12
|
-
|
13
|
-
Spork.prefork do
|
14
|
-
# Loading more in this block will cause your specs to run faster. However,
|
15
|
-
# if you change any configuration or code from libraries loaded here, you'll
|
16
|
-
# need to restart spork for it take effect.
|
17
|
-
require File.dirname(__FILE__) + '/../config/environment.rb'
|
18
|
-
require 'rspec'
|
19
|
-
require 'rspec/rails'
|
20
|
-
|
21
|
-
#### this is for this test only #######
|
22
|
-
$loaded_stuff << 'prefork block' ######
|
23
|
-
#######################################
|
24
|
-
end
|
25
|
-
|
26
|
-
Spork.each_run do
|
27
|
-
# This code will be run each time you run your specs.
|
28
|
-
|
29
|
-
#### this is for this test only #######
|
30
|
-
$loaded_stuff << 'each_run block' #####
|
31
|
-
#######################################
|
32
|
-
end
|
33
|
-
"""
|
34
|
-
And the application has a model, observer, route, and application helper
|
35
|
-
Scenario: Analyzing files were preloaded
|
36
|
-
When I run spork --diagnose
|
37
|
-
Then the output should not contain "user_observer.rb"
|
38
|
-
Then the output should not contain "user.rb"
|
39
|
-
Then the output should not contain "app/controllers/application.rb"
|
40
|
-
Then the output should not contain "app/controllers/application_controller.rb"
|
41
|
-
Then the output should not contain "app/controllers/application_helper.rb"
|
42
|
-
# Then the output should not contain "config/routes.rb"
|
43
|
-
|
44
|
-
Scenario: Running spork with a rails app and observers
|
45
|
-
Given a file named "spec/did_it_work_spec.rb" with:
|
46
|
-
"""
|
47
|
-
require 'spec_helper'
|
48
|
-
describe "Did it work?" do
|
49
|
-
it "checks to see if all worked" do
|
50
|
-
Spork.using_spork?.should == true
|
51
|
-
(Rails.respond_to?(:logger) ? Rails.logger : ActionController::Base.logger).info "hey there"
|
52
|
-
$loaded_stuff.should include('ActiveRecord::Base.establish_connection')
|
53
|
-
$loaded_stuff.should include('User')
|
54
|
-
$loaded_stuff.should include('UserObserver')
|
55
|
-
$loaded_stuff.should include('ApplicationHelper')
|
56
|
-
$loaded_stuff.should include('config/routes.rb')
|
57
|
-
$loaded_stuff.should include('each_run block')
|
58
|
-
$loaded_stuff.should include('prefork block')
|
59
|
-
puts "Specs successfully run within spork, and all initialization files were loaded"
|
60
|
-
end
|
61
|
-
end
|
62
|
-
"""
|
63
|
-
When I fire up a spork instance with "spork rspec"
|
64
|
-
And I run rspec --drb spec/did_it_work_spec.rb
|
65
|
-
Then the error output should be empty
|
66
|
-
And the output should contain "Specs successfully run within spork, and all initialization files were loaded"
|
67
|
-
And the file "log/test.log" should include "hey there"
|
68
|
-
|
69
|
-
|
70
|
-
Scenario: Running spork with a rails app and a non-standard port
|
71
|
-
Given a file named "spec/did_it_work_spec.rb" with:
|
72
|
-
"""
|
73
|
-
describe "Did it work?" do
|
74
|
-
it "checks to see if all worked" do
|
75
|
-
Spork.using_spork?.should == true
|
76
|
-
(Rails.respond_to?(:logger) ? Rails.logger : ActionController::Base.logger).info "hey there"
|
77
|
-
$loaded_stuff.should include('ActiveRecord::Base.establish_connection')
|
78
|
-
$loaded_stuff.should include('User')
|
79
|
-
$loaded_stuff.should include('UserObserver')
|
80
|
-
$loaded_stuff.should include('ApplicationHelper')
|
81
|
-
$loaded_stuff.should include('config/routes.rb')
|
82
|
-
$loaded_stuff.should include('each_run block')
|
83
|
-
$loaded_stuff.should include('prefork block')
|
84
|
-
puts "Specs successfully run within spork, and all initialization files were loaded"
|
85
|
-
end
|
86
|
-
end
|
87
|
-
"""
|
88
|
-
When I fire up a spork instance with "spork rspec --port 7000"
|
89
|
-
And I run rspec --drb --drb-port 7000 spec/did_it_work_spec.rb
|
90
|
-
Then the error output should be empty
|
91
|
-
And the output should contain "Specs successfully run within spork, and all initialization files were loaded"
|
92
|
-
And the file "log/test.log" should include "hey there"
|
@@ -1,67 +0,0 @@
|
|
1
|
-
Given /^I am in a fresh rails project named "(.+)"$/ do |folder_name|
|
2
|
-
@current_dir = SporkWorld::SANDBOX_DIR
|
3
|
-
# version_argument = ENV['RAILS_VERSION'] ? "_#{ENV['RAILS_VERSION']}_" : nil
|
4
|
-
# run("#{SporkWorld::RUBY_BINARY} #{%x{which rails}.chomp} #{folder_name}")
|
5
|
-
run(["rails", "new", folder_name].compact * " ")
|
6
|
-
|
7
|
-
if last_exit_status != 0
|
8
|
-
puts "Couldn't generate project. Output:\nSTDERR:\n-------\n#{last_stderr}\n------\n\nSTDOUT:\n-------\n#{last_stdout}\n\n"
|
9
|
-
last_exit_status.should == 0
|
10
|
-
end
|
11
|
-
@current_dir = File.join(File.join(SporkWorld::SANDBOX_DIR, folder_name))
|
12
|
-
in_current_dir do
|
13
|
-
FileUtils.ln_sf(ENV["BUNDLE_GEMFILE"], "Gemfile")
|
14
|
-
FileUtils.ln_sf(ENV["BUNDLE_GEMFILE"] + ".lock", "Gemfile.lock")
|
15
|
-
FileUtils.ln_sf(File.dirname(ENV["BUNDLE_GEMFILE"]) + "/.bundle", ".bundle")
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
Given "the application has a model, observer, route, and application helper" do
|
21
|
-
Given 'the following code appears in "config/application.rb" after /^end/:',
|
22
|
-
"""
|
23
|
-
ActiveRecord::Base.observers = [:user_observer]
|
24
|
-
"""
|
25
|
-
Given 'a file named "app/models/user.rb" with:',
|
26
|
-
"""
|
27
|
-
class User < ActiveRecord::Base
|
28
|
-
$loaded_stuff << 'User'
|
29
|
-
end
|
30
|
-
"""
|
31
|
-
Given 'a file named "app/models/user_observer.rb" with:',
|
32
|
-
"""
|
33
|
-
class UserObserver < ActiveRecord::Observer
|
34
|
-
$loaded_stuff << 'UserObserver'
|
35
|
-
end
|
36
|
-
"""
|
37
|
-
Given 'a file named "app/helpers/application_helper.rb" with:',
|
38
|
-
"""
|
39
|
-
module ApplicationHelper
|
40
|
-
$loaded_stuff << 'ApplicationHelper'
|
41
|
-
end
|
42
|
-
"""
|
43
|
-
Given 'the following code appears in "config/environment.rb" after /Rails::Initializer.run/:',
|
44
|
-
"""
|
45
|
-
config.active_record.observers = :user_observer
|
46
|
-
"""
|
47
|
-
Given 'the following code appears in "config/routes.rb" after /^end/:',
|
48
|
-
"""
|
49
|
-
$loaded_stuff << 'config/routes.rb'
|
50
|
-
"""
|
51
|
-
Given 'a file named "config/initializers/initialize_loaded_stuff.rb" with:',
|
52
|
-
"""
|
53
|
-
$loaded_stuff ||= []
|
54
|
-
"""
|
55
|
-
Given 'a file named "config/initializers/log_establish_connection_calls.rb" with:',
|
56
|
-
"""
|
57
|
-
class ActiveRecord::Base
|
58
|
-
class << self
|
59
|
-
def establish_connection_with_load_logging(*args)
|
60
|
-
$loaded_stuff << 'ActiveRecord::Base.establish_connection'
|
61
|
-
establish_connection_without_load_logging(*args)
|
62
|
-
end
|
63
|
-
alias_method_chain :establish_connection, :load_logging
|
64
|
-
end
|
65
|
-
end
|
66
|
-
"""
|
67
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
class Spork::AppFramework::Padrino < Spork::AppFramework
|
2
|
-
|
3
|
-
def preload(&block)
|
4
|
-
STDERR.puts "Preloading Padrino environment"
|
5
|
-
STDERR.flush
|
6
|
-
ENV["PADRINO_ENV"] ||= "test"
|
7
|
-
require boot_file
|
8
|
-
# Make it so that we don't have to restart Spork if we change, say, a model or routes
|
9
|
-
Spork.each_run { ::Padrino.reload! }
|
10
|
-
yield
|
11
|
-
end
|
12
|
-
|
13
|
-
def entry_point
|
14
|
-
@entry_point ||= File.expand_path("config/boot.rb", Dir.pwd)
|
15
|
-
end
|
16
|
-
alias :boot_file :entry_point
|
17
|
-
|
18
|
-
def boot_contents
|
19
|
-
@boot_contents ||= File.read(boot_file)
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
@@ -1,82 +0,0 @@
|
|
1
|
-
class Spork::AppFramework::Rails < Spork::AppFramework
|
2
|
-
|
3
|
-
def preload(&block)
|
4
|
-
STDERR.puts "Preloading Rails environment"
|
5
|
-
STDERR.flush
|
6
|
-
ENV["RAILS_ENV"] ||= 'test'
|
7
|
-
preload_rails
|
8
|
-
yield
|
9
|
-
end
|
10
|
-
|
11
|
-
def entry_point
|
12
|
-
@entry_point ||= File.expand_path("config/environment.rb", Dir.pwd)
|
13
|
-
end
|
14
|
-
|
15
|
-
alias :environment_file :entry_point
|
16
|
-
|
17
|
-
def boot_file
|
18
|
-
@boot_file ||= File.join(File.dirname(environment_file), 'boot')
|
19
|
-
end
|
20
|
-
|
21
|
-
def application_file
|
22
|
-
@application_file ||= File.join(File.dirname(environment_file), 'application')
|
23
|
-
end
|
24
|
-
|
25
|
-
def environment_contents
|
26
|
-
@environment_contents ||= File.read(environment_file)
|
27
|
-
end
|
28
|
-
|
29
|
-
def vendor
|
30
|
-
@vendor ||= File.expand_path("vendor/rails", Dir.pwd)
|
31
|
-
end
|
32
|
-
|
33
|
-
def deprecated_version
|
34
|
-
@version ||= (
|
35
|
-
if /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/.match(environment_contents)
|
36
|
-
$1
|
37
|
-
else
|
38
|
-
nil
|
39
|
-
end
|
40
|
-
)
|
41
|
-
end
|
42
|
-
|
43
|
-
def preload_rails
|
44
|
-
if deprecated_version && (not /^3/.match(deprecated_version))
|
45
|
-
puts "This version of spork only supports Rails 3.0. To use spork with rails 2.3.x, downgrade to spork 0.8.x."
|
46
|
-
exit 1
|
47
|
-
end
|
48
|
-
require application_file
|
49
|
-
::Rails.application
|
50
|
-
::Rails::Engine.class_eval do
|
51
|
-
def eager_load!
|
52
|
-
# turn off eager_loading, all together
|
53
|
-
end
|
54
|
-
end
|
55
|
-
# Spork.trap_method(::AbstractController::Helpers::ClassMethods, :helper)
|
56
|
-
Spork.trap_method(::ActiveModel::Observing::ClassMethods, :instantiate_observers)
|
57
|
-
Spork.each_run { ActiveRecord::Base.establish_connection rescue nil } if Object.const_defined?(:ActiveRecord)
|
58
|
-
|
59
|
-
|
60
|
-
AbstractController::Helpers::ClassMethods.module_eval do
|
61
|
-
def helper(*args, &block)
|
62
|
-
([args].flatten - [:all]).each do |arg|
|
63
|
-
next unless arg.is_a?(String)
|
64
|
-
filename = arg + "_helper"
|
65
|
-
unless ::ActiveSupport::Dependencies.search_for_file(filename)
|
66
|
-
# this error message must raise in the format such that LoadError#path returns the filename
|
67
|
-
raise LoadError.new("Missing helper file helpers/%s.rb" % filename)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
Spork.each_run(false) do
|
72
|
-
modules_for_helpers(args).each do |mod|
|
73
|
-
add_template_helper(mod)
|
74
|
-
end
|
75
|
-
|
76
|
-
_helpers.module_eval(&block) if block_given?
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
Spork.each_run do
|
2
|
-
::ActiveSupport.const_defined?(:Dependencies) ?
|
3
|
-
::ActiveSupport::Dependencies.mechanism = :load :
|
4
|
-
::Dependencies.mechanism = :load
|
5
|
-
|
6
|
-
require 'action_controller/dispatcher'
|
7
|
-
dispatcher = ::ActionController::Dispatcher.new($stdout)
|
8
|
-
|
9
|
-
if ::ActionController::Dispatcher.respond_to?(:reload_application)
|
10
|
-
::ActionController::Dispatcher.reload_application
|
11
|
-
else
|
12
|
-
dispatcher.reload_application
|
13
|
-
end
|
14
|
-
end if Spork.using_spork?
|
data/lib/spork/gem_helpers.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
module Spork::GemHelpers
|
2
|
-
extend self
|
3
|
-
|
4
|
-
class GemPath
|
5
|
-
attr_reader :name, :version, :path, :version_numbers
|
6
|
-
include Comparable
|
7
|
-
def initialize(p)
|
8
|
-
@path = p
|
9
|
-
@name, @version = File.basename(p).scan(/^(.+?)-([^-]+)$/).flatten
|
10
|
-
@version_numbers = @version.split(/[^0-9]+/).map(&:to_i)
|
11
|
-
end
|
12
|
-
|
13
|
-
def <=>(other)
|
14
|
-
raise "Not comparable gem paths ('#{name}' is not '#{other.name}')" unless name == other.name
|
15
|
-
@version_numbers <=> other.version_numbers
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def latest_load_paths
|
20
|
-
case
|
21
|
-
when defined?(Bundler)
|
22
|
-
$LOAD_PATH.map { |p| File.expand_path(p) }.uniq
|
23
|
-
when Gem.respond_to?(:path)
|
24
|
-
Dir["{#{Gem.path.join(',')}}" + "/gems/*"].inject({}) do |h,f|
|
25
|
-
gem_path = GemPath.new(f)
|
26
|
-
if h[gem_path.name]
|
27
|
-
h[gem_path.name] = gem_path if gem_path > h[gem_path.name]
|
28
|
-
else
|
29
|
-
h[gem_path.name] = gem_path
|
30
|
-
end
|
31
|
-
h
|
32
|
-
end.values.map { |gem_path| File.expand_path("lib", gem_path.path) }.sort.uniq
|
33
|
-
else
|
34
|
-
STDERR.puts "No mechanism available to scan for other gems implementing spork hooks. "
|
35
|
-
[]
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Spork::AppFramework::Rails do
|
4
|
-
describe ".deprecated_version" do
|
5
|
-
it "detects the current version of rails" do
|
6
|
-
create_file("config/environment.rb", "RAILS_GEM_VERSION = '2.1.0'")
|
7
|
-
in_current_dir do
|
8
|
-
Spork::AppFramework::Rails.new.deprecated_version.should == "2.1.0"
|
9
|
-
end
|
10
|
-
|
11
|
-
create_file("config/environment.rb", 'RAILS_GEM_VERSION = "2.1.0"')
|
12
|
-
in_current_dir do
|
13
|
-
Spork::AppFramework::Rails.new.deprecated_version.should == "2.1.0"
|
14
|
-
end
|
15
|
-
|
16
|
-
create_file("config/environment.rb", 'RAILS_GEM_VERSION = "> 2.1.0"')
|
17
|
-
in_current_dir do
|
18
|
-
Spork::AppFramework::Rails.new.deprecated_version.should == "> 2.1.0"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|