cheaptoad 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +9 -0
- data/Manifest.txt +13 -11
- data/PostInstall.txt +1 -1
- data/README.rdoc +92 -25
- data/Rakefile +23 -26
- data/app/controllers/notices_controller.rb +0 -7
- data/app/controllers/notifier_api_controller.rb +10 -0
- data/app/models/notice.rb +34 -8
- data/lib/cheaptoad.rb +6 -3
- data/lib/generators/cheaptoad_migration/USAGE +5 -0
- data/lib/generators/cheaptoad_migration/cheaptoad_migration_generator.rb +20 -0
- data/lib/generators/cheaptoad_migration/templates/migration.rb +26 -0
- data/lib/tasks/cheaptoad.rake +4 -0
- metadata +48 -50
- data/script/console +0 -10
- data/script/destroy +0 -14
- data/script/generate +0 -14
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -1,11 +1,5 @@
|
|
1
|
-
History.txt
|
2
|
-
MIT-LICENSE
|
3
|
-
Manifest.txt
|
4
|
-
PostInstall.txt
|
5
|
-
README.rdoc
|
6
|
-
Rakefile
|
7
|
-
TODO
|
8
1
|
app/controllers/notices_controller.rb
|
2
|
+
app/controllers/notifier_api_controller.rb
|
9
3
|
app/models/notice.rb
|
10
4
|
app/views/layouts/with_feed.html.erb
|
11
5
|
app/views/notices/index.html.erb
|
@@ -13,16 +7,24 @@ app/views/notices/list_by_api_key.html.erb
|
|
13
7
|
app/views/notices/list_notices.atom.builder
|
14
8
|
app/views/notices/list_notices.html.erb
|
15
9
|
app/views/notices/show.html.erb
|
16
|
-
generators/cheaptoad_migration/USAGE
|
17
10
|
generators/cheaptoad_migration/cheaptoad_migration_generator.rb
|
18
11
|
generators/cheaptoad_migration/templates/20090914074933_ct_migrate.rb
|
12
|
+
generators/cheaptoad_migration/USAGE
|
13
|
+
History.txt
|
19
14
|
init.rb
|
20
15
|
install.rb
|
21
16
|
lib/cheaptoad.rb
|
17
|
+
lib/generators/cheaptoad_migration/cheaptoad_migration_generator.rb
|
18
|
+
lib/generators/cheaptoad_migration/templates/migration.rb
|
19
|
+
lib/generators/cheaptoad_migration/USAGE
|
20
|
+
lib/tasks/cheaptoad.rake
|
21
|
+
MIT-LICENSE
|
22
|
+
Manifest.txt
|
23
|
+
PostInstall.txt
|
22
24
|
rails/init.rb
|
23
|
-
|
24
|
-
|
25
|
-
script/generate
|
25
|
+
Rakefile
|
26
|
+
README.rdoc
|
26
27
|
test/test_cheaptoad.rb
|
27
28
|
test/test_helper.rb
|
29
|
+
TODO
|
28
30
|
uninstall.rb
|
data/PostInstall.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
For more information on cheaptoad, see http://cheaptoad
|
1
|
+
For more information on cheaptoad, see http://github.com/noahgibbs/cheaptoad
|
data/README.rdoc
CHANGED
@@ -1,40 +1,102 @@
|
|
1
|
-
=
|
1
|
+
= CHEAPTOAD
|
2
2
|
|
3
|
-
* http://
|
3
|
+
* http://noahgibbs.github.com/cheaptoad
|
4
|
+
|
5
|
+
== INSTALL:
|
6
|
+
|
7
|
+
sudo gem install cheaptoad
|
8
|
+
|
9
|
+
== USE:
|
10
|
+
|
11
|
+
In the app you want to catch hoptoad notices:
|
12
|
+
|
13
|
+
* Make your app use the gem:
|
14
|
+
* In Rails 2.3.X: Add "config.gem 'cheaptoad'" to environment.rb.
|
15
|
+
* In Rails 3: Add "gem 'cheaptoad'" to your Gemfile
|
16
|
+
* Run "./script generate cheaptoad_migration" in your app
|
17
|
+
* Run "rake db:migrate" to create the notices table
|
18
|
+
* Start your app, and you're catching notices!
|
19
|
+
|
20
|
+
In the app you want to send hoptoad notices:
|
21
|
+
|
22
|
+
* Install and configure hoptoad like usual (see hoptoad_notifier)
|
23
|
+
* In initializers/hoptoad.rb, add:
|
24
|
+
config.host = 'my-app-hostname.mydomain.com'
|
25
|
+
config.port = 4321 # Whatever your app port is
|
26
|
+
* Start your app, and errors will now go to your cheaptoad-ified app
|
4
27
|
|
5
28
|
== DESCRIPTION:
|
6
29
|
|
7
|
-
CheapToad is a simple server plugin for the
|
8
|
-
app
|
30
|
+
CheapToad is a simple server plugin for the Hoptoad notifier. Make an
|
31
|
+
app receive and store errors from any app in just a couple of lines!
|
32
|
+
|
33
|
+
Hoptoad (hoptoadapp.com) is a commercial application and hosting
|
34
|
+
service, run by thoughtbot. For larger or more important apps, you'll
|
35
|
+
want your error logging handled by a reliable, professional service,
|
36
|
+
such as thoughtbot and Hoptoad. For small, simple and experimental
|
37
|
+
apps, why pay money?
|
38
|
+
|
39
|
+
== WHY CHEAPTOAD?
|
40
|
+
|
41
|
+
With CheapToad and Heroku, you can get mostly-reliable remote error
|
42
|
+
logging for nothing. When and if your app grows larger, you can
|
43
|
+
change two lines in config/initializers/hoptoad.rb and switch to
|
44
|
+
Hoptoad for extra reliability.
|
45
|
+
|
46
|
+
Hoptoad has a far better interface, and is free for the first project
|
47
|
+
and first two users (up to a given rate of errors received). But CheapToad
|
48
|
+
could still be the right choice if you:
|
49
|
+
|
50
|
+
* have a lot of projects and don't want to spend money
|
51
|
+
* don't want to let anybody else store your error data
|
52
|
+
* have a lot of people to collaborate with, but not that many errors yet
|
53
|
+
* feel bad about making a new Hoptoad account for each of your projects
|
54
|
+
just to scam service for free (this is me)
|
55
|
+
* need a lot of control over your old error notices -- if cleaning them up
|
56
|
+
after a while is Not Okay for some reason, for instance
|
57
|
+
* don't mind hosting for yourself and/or have a hosting solution you like
|
58
|
+
* just like running your own stuff, and like to get your hands dirty (also me)
|
59
|
+
|
60
|
+
By the way, I'm not affiliated with thoughtbot. This is all reverse
|
61
|
+
engineered from the Hoptoad notifier and somebody's RedMine plugin for
|
62
|
+
Hoptoad. Thoughtbot is aware of CheapToad's existence, but I'm not an
|
63
|
+
employee or anything.
|
64
|
+
|
65
|
+
Also, if you like CheapToad for your experimental projects, consider
|
66
|
+
upgrading a project or two to Hoptoad, or getting your employer to do
|
67
|
+
the same. I don't get a cut, but if I/we are costing them money
|
68
|
+
overall then they have less incentive to keep giving us code to use.
|
69
|
+
If we act like the farm team for their stuff and occasionally upgrade,
|
70
|
+
they have more incentive to keep writing things like the
|
71
|
+
hoptoad_notifier for us to bend to our own purposes.
|
9
72
|
|
10
73
|
== FEATURES:
|
11
74
|
|
12
75
|
* Very simple installation
|
13
76
|
* Very simple configuration
|
14
|
-
* Keeps your
|
15
|
-
*
|
16
|
-
* Maintains records of old
|
17
|
-
* RSS feed of
|
77
|
+
* Keeps your error notices around to browse later
|
78
|
+
* 100% free for any number of projects
|
79
|
+
* Maintains records of old error notices forever
|
80
|
+
* RSS feed of error notices for each project
|
18
81
|
|
19
82
|
== PROBLEMS:
|
20
83
|
|
21
84
|
* Very simple
|
22
85
|
* Not very configurable
|
23
|
-
*
|
24
|
-
* 100% Unsecured -- like
|
25
|
-
Unlike
|
86
|
+
* You have to run your own server, or use something like Heroku
|
87
|
+
* 100% Unsecured -- like Hoptoad, we rely on API key uniqueness for security.
|
88
|
+
Unlike Hoptoad, we suggest using fairly guessable API keys.
|
89
|
+
* All of these problems can be summed up as "not industrial strength"
|
26
90
|
|
27
91
|
== SYNOPSIS:
|
28
92
|
|
29
|
-
Make a new Rails app, or choose an existing one.
|
30
|
-
|
31
|
-
|
32
|
-
:notices". Now that app can receive HopToad errors!
|
93
|
+
Make a new Rails app, or choose an existing one. Install the cheaptoad
|
94
|
+
plugin, and configure as mentioned above. Now that app can receive
|
95
|
+
Hoptoad errors!
|
33
96
|
|
34
|
-
In any and all apps that you want to send errors to your app,
|
35
|
-
file called config/initializers/hoptoad.rb, as
|
36
|
-
using
|
37
|
-
course. The config file will look a bit like this:
|
97
|
+
In any and all apps that you want to send errors to your app, you'll
|
98
|
+
need to create a file called config/initializers/hoptoad.rb, just as
|
99
|
+
you always would when using Hoptoad. Here's an example config file:
|
38
100
|
|
39
101
|
HoptoadNotifier.configure do |config|
|
40
102
|
config.api_key = 'My Project Name'
|
@@ -42,12 +104,12 @@ HoptoadNotifier.configure do |config|
|
|
42
104
|
config.port = 80 # or whatever port number
|
43
105
|
|
44
106
|
# All standard Hoptoad filters are supported
|
45
|
-
config.
|
107
|
+
config.filter_parameters << "MY_SECRET_KEY"
|
46
108
|
|
47
109
|
end
|
48
110
|
|
49
111
|
Note that the host and port are for the app that will *receive*
|
50
|
-
|
112
|
+
Hoptoad errors. That's the app you added 'config.gem "cheaptoad"'
|
51
113
|
to.
|
52
114
|
|
53
115
|
== REQUIREMENTS:
|
@@ -56,7 +118,7 @@ You'll need a Rails app, which will be your CheapToad server. It can
|
|
56
118
|
do whatever else you like, but its notices controller will be used for
|
57
119
|
CheapToad stuff.
|
58
120
|
|
59
|
-
You will *not* need a
|
121
|
+
You will *not* need a Hoptoad API key. That's kind of the point of this
|
60
122
|
project. Instead of using a big hexadecimal string as your API key, I
|
61
123
|
recommend you use a simple string like "My Blog" or "Secret Project X".
|
62
124
|
That API key will be used by CheapToad as your project name.
|
@@ -74,15 +136,20 @@ We're considering adding the ability to put in your own CSS file
|
|
74
136
|
without changing the HTML, just to make the output less stark. If you
|
75
137
|
care about this feature and would use it, contact me and let me know!
|
76
138
|
|
77
|
-
==
|
139
|
+
== COMPATIBILITY:
|
78
140
|
|
79
|
-
|
141
|
+
CheapToad is compatible with the HopToad protocol v1. v2 compatibility
|
142
|
+
is in the works, and may work as you read this.
|
143
|
+
|
144
|
+
== CREDITS:
|
145
|
+
|
146
|
+
Written by Noah Gibbs, with updates by Silas Baronda
|
80
147
|
|
81
148
|
== LICENSE:
|
82
149
|
|
83
150
|
(The MIT License)
|
84
151
|
|
85
|
-
Copyright (c) 2009 Noah Gibbs
|
152
|
+
Copyright (c) 2009-2010 Noah Gibbs
|
86
153
|
|
87
154
|
Permission is hereby granted, free of charge, to any person obtaining
|
88
155
|
a copy of this software and associated documentation files (the
|
data/Rakefile
CHANGED
@@ -1,26 +1,23 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
require '
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
# TODO - want other tests/tasks run by default? Add them to the list
|
25
|
-
# remove_task :default
|
26
|
-
# task :default => [:spec, :features]
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
5
|
+
desc 'Default: run unit tests.'
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
desc 'Test the cheaptoad plugin.'
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
10
|
+
t.libs << 'lib'
|
11
|
+
t.libs << 'test'
|
12
|
+
t.pattern = 'test/**/*_test.rb'
|
13
|
+
t.verbose = true
|
14
|
+
end
|
15
|
+
|
16
|
+
desc 'Generate documentation for the cheaptoad plugin.'
|
17
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
18
|
+
rdoc.rdoc_dir = 'rdoc'
|
19
|
+
rdoc.title = 'Cheaptoad'
|
20
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
21
|
+
rdoc.rdoc_files.include('README')
|
22
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
23
|
+
end
|
@@ -1,11 +1,4 @@
|
|
1
1
|
class NoticesController < ApplicationController
|
2
|
-
def create
|
3
|
-
notice = Notice.notice_from_yaml(request.raw_post)
|
4
|
-
notice.save!
|
5
|
-
|
6
|
-
render :text => "Successfully received error from hoptoad_notifier!"
|
7
|
-
end
|
8
|
-
|
9
2
|
def index
|
10
3
|
if params[:api_key]
|
11
4
|
@api_key = params[:api_key]
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class NotifierApiController < ApplicationController
|
2
|
+
# Under Rails 2.X, matches /notifier_api/v2/notices automatically
|
3
|
+
def v2
|
4
|
+
notice = Notice.from_v2_xml(request.raw_post)
|
5
|
+
notice.save!
|
6
|
+
|
7
|
+
render :text => "Successfully received error from hoptoad_notifier v2!"
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
data/app/models/notice.rb
CHANGED
@@ -1,26 +1,52 @@
|
|
1
1
|
class Notice < ActiveRecord::Base
|
2
2
|
[:session, :request, :environment, :backtrace].each {|a| serialize a}
|
3
3
|
|
4
|
-
|
4
|
+
# Accepts a string or parsed XML
|
5
|
+
def self.from_v2_xml(str)
|
6
|
+
full_xml = Hash.from_xml(str) if str.kind_of? String
|
7
|
+
self.from_hash(full_xml)
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.from_v1_yaml(str)
|
5
11
|
full_yaml = YAML.load(str) if str.kind_of? String
|
6
|
-
full_yaml
|
12
|
+
self.from_hash(full_yaml)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Accepts a string or parsed YAML
|
16
|
+
def self.from_hash(full_hash)
|
17
|
+
full_hash = full_hash['notice'] if full_hash['notice']
|
7
18
|
|
8
|
-
if(
|
9
|
-
backtraces =
|
19
|
+
if(full_hash['error']['backtrace'].kind_of? String)
|
20
|
+
backtraces = full_hash['error']['backtrace']
|
10
21
|
else
|
11
|
-
backtraces =
|
22
|
+
backtraces = full_hash['error']['backtrace']['line']
|
12
23
|
end
|
13
|
-
digest = Digest::SHA1.hexdigest(backtraces)
|
24
|
+
digest = Digest::SHA1.hexdigest(backtraces.to_s)
|
14
25
|
|
15
26
|
notices = Notice.find_all_by_backtrace_digest(digest)
|
16
|
-
notices = notices.reject! { |i|
|
27
|
+
notices = notices.reject! { |i|
|
28
|
+
i.backtrace != full_hash['error']['backtrace']['line']
|
29
|
+
}
|
17
30
|
if notices and notices.length > 0
|
18
31
|
notices[0].count += 1
|
19
32
|
return notices[0]
|
20
33
|
end
|
21
34
|
|
22
|
-
|
35
|
+
# Convert to old format - ugly, but it works and doesn't break
|
36
|
+
# all the views (yet)
|
37
|
+
notice = Notice.new
|
38
|
+
|
39
|
+
notice.api_key = full_hash['api_key']
|
40
|
+
notice.error_message = full_hash['error']['message']
|
41
|
+
notice.error_class = full_hash['error']['class']
|
42
|
+
|
23
43
|
notice.backtrace_digest = digest
|
44
|
+
|
45
|
+
notice.session = nil
|
46
|
+
notice.environment = full_hash['server_environment']['environment_name']
|
47
|
+
notice.request = full_hash['request']
|
48
|
+
notice.backtrace = backtraces
|
49
|
+
|
24
50
|
notice.count = 1
|
25
51
|
|
26
52
|
notice
|
data/lib/cheaptoad.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
$:.unshift(File.dirname(__FILE__)) unless
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
if Rails::VERSION::MAJOR > 2
|
5
|
+
module Cheaptoad
|
6
|
+
class Cheaptoad < Rails::Engine
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class CheaptoadMigrationGenerator < Rails::Generators::Base
|
2
|
+
include Rails::Generators::Migration
|
3
|
+
|
4
|
+
filename = File.expand_path("templates",
|
5
|
+
File.dirname(__FILE__));
|
6
|
+
source_root filename
|
7
|
+
|
8
|
+
def self.next_migration_number(dirname)
|
9
|
+
if ActiveRecord::Base.timestamped_migrations
|
10
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
11
|
+
else
|
12
|
+
"%.3d" % (current_migration_number(dirname) + 1)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_migration_file
|
17
|
+
migration_template "migration.rb", "db/migrate/add_cheaptoad_table.rb"
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class CtMigrate < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table "notices", :force => true do |t|
|
4
|
+
t.string :api_key, :limit => 100
|
5
|
+
t.string :error_message, :limit => 200
|
6
|
+
t.string :error_class, :limit => 100
|
7
|
+
t.string :backtrace_digest, :limit => 256
|
8
|
+
t.integer :count
|
9
|
+
t.text :session
|
10
|
+
t.text :request
|
11
|
+
t.text :environment
|
12
|
+
t.text :backtrace
|
13
|
+
|
14
|
+
t.timestamps
|
15
|
+
end
|
16
|
+
|
17
|
+
add_index("notices", "backtrace_digest")
|
18
|
+
add_index("notices", "updated_at")
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.down
|
22
|
+
remove_index("notices", "backtrace_digest")
|
23
|
+
remove_index("notices", "updated_at")
|
24
|
+
drop_table "notices"
|
25
|
+
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cheaptoad
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 7
|
9
|
+
version: 0.0.7
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Noah Gibbs
|
@@ -9,51 +14,34 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date:
|
17
|
+
date: 2010-09-17 00:00:00 -07:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: rails
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 2.3.4
|
24
|
-
version:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: hoe
|
27
|
-
type: :development
|
28
|
-
version_requirement:
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
30
24
|
requirements:
|
31
25
|
- - ">="
|
32
26
|
- !ruby/object:Gem::Version
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
- 3
|
30
|
+
- 2
|
31
|
+
version: 2.3.2
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
description: Add just a couple of lines to your app, and have it receive exceptions from your other apps via the hoptoad_notifier.
|
35
|
+
email: noah_nospam_gibbs@remove_nospam.yahoo.com
|
40
36
|
executables: []
|
41
37
|
|
42
38
|
extensions: []
|
43
39
|
|
44
|
-
extra_rdoc_files:
|
45
|
-
|
46
|
-
- Manifest.txt
|
47
|
-
- PostInstall.txt
|
40
|
+
extra_rdoc_files: []
|
41
|
+
|
48
42
|
files:
|
49
|
-
- History.txt
|
50
|
-
- MIT-LICENSE
|
51
|
-
- Manifest.txt
|
52
|
-
- PostInstall.txt
|
53
|
-
- README.rdoc
|
54
|
-
- Rakefile
|
55
|
-
- TODO
|
56
43
|
- app/controllers/notices_controller.rb
|
44
|
+
- app/controllers/notifier_api_controller.rb
|
57
45
|
- app/models/notice.rb
|
58
46
|
- app/views/layouts/with_feed.html.erb
|
59
47
|
- app/views/notices/index.html.erb
|
@@ -61,48 +49,58 @@ files:
|
|
61
49
|
- app/views/notices/list_notices.atom.builder
|
62
50
|
- app/views/notices/list_notices.html.erb
|
63
51
|
- app/views/notices/show.html.erb
|
64
|
-
- generators/cheaptoad_migration/USAGE
|
65
52
|
- generators/cheaptoad_migration/cheaptoad_migration_generator.rb
|
66
53
|
- generators/cheaptoad_migration/templates/20090914074933_ct_migrate.rb
|
54
|
+
- generators/cheaptoad_migration/USAGE
|
55
|
+
- History.txt
|
67
56
|
- init.rb
|
68
57
|
- install.rb
|
69
58
|
- lib/cheaptoad.rb
|
59
|
+
- lib/generators/cheaptoad_migration/cheaptoad_migration_generator.rb
|
60
|
+
- lib/generators/cheaptoad_migration/templates/migration.rb
|
61
|
+
- lib/generators/cheaptoad_migration/USAGE
|
62
|
+
- lib/tasks/cheaptoad.rake
|
63
|
+
- MIT-LICENSE
|
64
|
+
- Manifest.txt
|
65
|
+
- PostInstall.txt
|
70
66
|
- rails/init.rb
|
71
|
-
-
|
72
|
-
-
|
73
|
-
- script/generate
|
67
|
+
- Rakefile
|
68
|
+
- README.rdoc
|
74
69
|
- test/test_cheaptoad.rb
|
75
70
|
- test/test_helper.rb
|
71
|
+
- TODO
|
76
72
|
- uninstall.rb
|
77
73
|
has_rdoc: true
|
78
|
-
homepage: http://
|
74
|
+
homepage: http://github.com/noahgibbs
|
79
75
|
licenses: []
|
80
76
|
|
81
|
-
post_install_message:
|
82
|
-
rdoc_options:
|
83
|
-
|
84
|
-
- README.rdoc
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
|
85
80
|
require_paths:
|
86
81
|
- lib
|
87
82
|
required_ruby_version: !ruby/object:Gem::Requirement
|
88
83
|
requirements:
|
89
84
|
- - ">="
|
90
85
|
- !ruby/object:Gem::Version
|
91
|
-
|
92
|
-
|
86
|
+
segments:
|
87
|
+
- 1
|
88
|
+
- 8
|
89
|
+
- 7
|
90
|
+
version: 1.8.7
|
93
91
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
92
|
requirements:
|
95
93
|
- - ">="
|
96
94
|
- !ruby/object:Gem::Version
|
95
|
+
segments:
|
96
|
+
- 0
|
97
97
|
version: "0"
|
98
|
-
version:
|
99
98
|
requirements: []
|
100
99
|
|
101
100
|
rubyforge_project: cheaptoad
|
102
|
-
rubygems_version: 1.3.
|
101
|
+
rubygems_version: 1.3.6
|
103
102
|
signing_key:
|
104
103
|
specification_version: 3
|
105
|
-
summary:
|
106
|
-
test_files:
|
107
|
-
|
108
|
-
- test/test_helper.rb
|
104
|
+
summary: Catch hoptoad notices from your app.
|
105
|
+
test_files: []
|
106
|
+
|
data/script/console
DELETED
@@ -1,10 +0,0 @@
|
|
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/cheaptoad.rb'}"
|
9
|
-
puts "Loading cheaptoad gem"
|
10
|
-
exec "#{irb} #{libs} --simple-prompt"
|
data/script/destroy
DELETED
@@ -1,14 +0,0 @@
|
|
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)
|
data/script/generate
DELETED
@@ -1,14 +0,0 @@
|
|
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/generate'
|
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::Generate.new.run(ARGV)
|