guard-rails 0.0.1

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.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in guard-rails.gemspec
4
+ gemspec
5
+ gem 'rake', '0.8.7'
@@ -0,0 +1,17 @@
1
+ Want to restart your Rails development server whilst you work? Now you can!
2
+
3
+ guard 'rails', :port => 5000 do
4
+ watch('Gemfile.lock')
5
+ watch(%r{^(config|lib)/.*})
6
+ end
7
+
8
+ Four fun options!
9
+
10
+ * `:port` is the port number to run on (default `3000`)
11
+ * `:environment` is the environment to use (default `development`)
12
+ * `:start_on_start` will start the server when starting Guard (default `true`)
13
+ * `:force_run` kills any process that's holding open the listen port before attempting to (re)start Rails (default `false`).
14
+
15
+ This is super-alpha, but it works for me! Only really hand-tested in Mac OS X. Feel free to fork'n'fix for other
16
+ OSes, and to add some real tests.
17
+
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "guard/rails/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "guard-rails"
7
+ s.version = GuardRails::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["John Bintz"]
10
+ s.email = ["john@coswellproductions.com"]
11
+ s.homepage = ""
12
+ s.summary = %q{Restart Rails when things change in your app}
13
+ s.description = %q{Restart Rails when things change in your app}
14
+
15
+ s.rubyforge_project = "guard-rails"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency 'guard', '>= 0.2.2'
23
+ end
@@ -0,0 +1 @@
1
+ require 'guard/rails'
@@ -0,0 +1,77 @@
1
+ require 'guard'
2
+ require 'guard/guard'
3
+ require 'rbconfig'
4
+
5
+ module Guard
6
+ class Rails < ::Guard::Guard
7
+ attr_reader :options
8
+
9
+ def initialize(watchers = [], options = {})
10
+ super
11
+ @options = {
12
+ :port => 3000,
13
+ :environment => 'development',
14
+ :start_on_start => true,
15
+ :force_run => false
16
+ }.merge(options)
17
+ end
18
+
19
+ def start
20
+ UI.info "Guard::Rails restarting app on port #{options[:port]} using #{options[:environment]} environment."
21
+ run_all if options[:start_on_start]
22
+ end
23
+
24
+ def run_all
25
+ Notifier.notify("Rails restarting on port #{options[:port]} in #{options[:environment]} environment...", :title => "Restarting Rails...", :image => :pending)
26
+ stop_rails ; start_rails
27
+ Notifier.notify("Rails restarted on port #{options[:port]}.", :title => "Rails restarted!", :image => :success)
28
+ end
29
+
30
+ def stop
31
+ Notifier.notify("Until next time...", :title => "Rails shutting down.", :image => :pending)
32
+ stop_rails
33
+ end
34
+
35
+ def run_on_change(paths)
36
+ run_all
37
+ end
38
+
39
+ private
40
+ def pid_file
41
+ File.expand_path("tmp/pids/#{options[:environment]}.pid")
42
+ end
43
+
44
+ def start_rails
45
+ kill_unmanaged_pid! if options[:force_run]
46
+ system %{sh -c 'cd #{Dir.pwd} && rails s -e #{options[:environment]} -p #{options[:port]} --pid #{pid_file} &'}
47
+ while !File.file?(pid_file)
48
+ sleep 0.5
49
+ end
50
+ UI.info "Rails restarted, pid #{File.read(pid_file)}"
51
+ end
52
+
53
+ def stop_rails
54
+ if File.file?(pid_file)
55
+ system %{kill -INT #{File.read(pid_file).strip}}
56
+ end
57
+ end
58
+
59
+ def unmanaged_pid
60
+ if RbConfig::CONFIG['host_os'] =~ /darwin/
61
+ %x{lsof -P}.each_line { |line|
62
+ if line["*:#{options[:port]} "]
63
+ return line.split("\s")[1]
64
+ end
65
+ }
66
+ end
67
+ nil
68
+ end
69
+
70
+ def kill_unmanaged_pid!
71
+ if pid = unmanaged_pid
72
+ system %{kill -INT #{pid}}
73
+ end
74
+ end
75
+ end
76
+ end
77
+
@@ -0,0 +1,5 @@
1
+ guard 'rails' do
2
+ watch('Gemfile.lock')
3
+ watch(%r{^(config|lib)/.*})
4
+ end
5
+
@@ -0,0 +1,4 @@
1
+ module GuardRails
2
+ VERSION = '0.0.1'
3
+ end
4
+
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: guard-rails
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - John Bintz
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-05-31 00:00:00 -04:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: guard
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.2.2
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *id001
27
+ description: Restart Rails when things change in your app
28
+ email:
29
+ - john@coswellproductions.com
30
+ executables: []
31
+
32
+ extensions: []
33
+
34
+ extra_rdoc_files: []
35
+
36
+ files:
37
+ - .gitignore
38
+ - Gemfile
39
+ - README.md
40
+ - Rakefile
41
+ - guard-rails.gemspec
42
+ - lib/guard-rails.rb
43
+ - lib/guard/rails.rb
44
+ - lib/guard/rails/templates/Guardfile
45
+ - lib/guard/rails/version.rb
46
+ has_rdoc: true
47
+ homepage: ""
48
+ licenses: []
49
+
50
+ post_install_message:
51
+ rdoc_options: []
52
+
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 104230829909269231
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ hash: 104230829909269231
70
+ segments:
71
+ - 0
72
+ version: "0"
73
+ requirements: []
74
+
75
+ rubyforge_project: guard-rails
76
+ rubygems_version: 1.6.2
77
+ signing_key:
78
+ specification_version: 3
79
+ summary: Restart Rails when things change in your app
80
+ test_files: []
81
+