raygun 0.0.16 → 0.0.17
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.md +9 -0
- data/README.md +18 -10
- data/TODO.md +0 -3
- data/app_prototype/.env +6 -0
- data/app_prototype/.gitignore +1 -0
- data/app_prototype/{.rbenv-version → .ruby-version} +0 -0
- data/app_prototype/.rvmrc +1 -1
- data/app_prototype/Gemfile +6 -3
- data/app_prototype/Procfile +2 -1
- data/app_prototype/README.md +45 -18
- data/app_prototype/app/assets/stylesheets/_navbar.less +5 -0
- data/app_prototype/app/assets/stylesheets/application.css.less +1 -6
- data/app_prototype/app/controllers/users_controller.rb +4 -4
- data/app_prototype/app/models/user.rb +1 -1
- data/app_prototype/app/views/layouts/application.html.slim +1 -1
- data/app_prototype/app/views/user_mailer/activation_needed_email.html.erb +2 -2
- data/app_prototype/app/views/user_mailer/activation_needed_email.text.erb +2 -2
- data/app_prototype/app/views/user_mailer/activation_success_email.html.erb +3 -3
- data/app_prototype/app/views/user_mailer/activation_success_email.text.erb +3 -3
- data/app_prototype/app/views/user_mailer/reset_password_email.html.erb +2 -2
- data/app_prototype/app/views/user_mailer/reset_password_email.text.erb +3 -3
- data/app_prototype/config/database.yml +1 -1
- data/app_prototype/config/environments/acceptance.rb +2 -2
- data/app_prototype/config/environments/production.rb +1 -1
- data/app_prototype/config/environments/test.rb +1 -1
- data/app_prototype/config/initializers/email.rb +4 -2
- data/app_prototype/db/migrate/20121128215324_sorcery_core.rb +3 -1
- data/app_prototype/db/schema.rb +1 -0
- data/app_prototype/spec/mailers/user_mailer_spec.rb +1 -1
- data/bin/raygun +10 -2
- data/lib/raygun/version.rb +1 -1
- metadata +5 -3
data/CHANGES.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.0.17 [2013-01-17]
|
4
|
+
|
5
|
+
* Configure .rbenv-version, .rvmrc, and Gemfile with the version of ruby used to execute raygun.
|
6
|
+
* Improve the detfault email content.
|
7
|
+
* Improve the raygun and app_prototype READMEs.
|
8
|
+
* Use $PORT to set the server port for Heroku compatibility, with default set in .env.
|
9
|
+
* .ruby-version instead of .rbenv-version (as recommended by rbenv).
|
10
|
+
* Add a unique database constraint on users.email.
|
11
|
+
|
3
12
|
## 0.0.16 [2013-01-04]
|
4
13
|
|
5
14
|
* Improved authorization rules so that users can't delete themselves and non-admin can't access users controller :new.
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# Raygun
|
4
4
|
|
5
5
|
Rails application generator that builds a new project skeleton configured with Carbon Five preferences and
|
6
|
-
best practices baked right in. Spend less time configuring
|
6
|
+
best practices baked right in. Spend less time configuring and more building cool features.
|
7
7
|
|
8
8
|
Major tools/libraries:
|
9
9
|
|
@@ -17,9 +17,13 @@ Major tools/libraries:
|
|
17
17
|
* RSpec
|
18
18
|
* Factory Girl
|
19
19
|
* Jasmine
|
20
|
+
* SimpleCov
|
20
21
|
* Guard (rspec, jasmine, livereload)
|
22
|
+
* And many tweaks, patterns and common recipes.
|
21
23
|
|
22
|
-
|
24
|
+
Raygun includes generator templates for controllers, views, and specs so that generated code follows best
|
25
|
+
practices. For example, view generation produces bootstrap compatible markup and rspec specs use factory
|
26
|
+
girl when appropriate.
|
23
27
|
|
24
28
|
Inspired by Xavier Shay and ThoughtBot's Suspenders. Thanks!
|
25
29
|
|
@@ -27,9 +31,10 @@ Inspired by Xavier Shay and ThoughtBot's Suspenders. Thanks!
|
|
27
31
|
|
28
32
|
Raygun...
|
29
33
|
|
30
|
-
*
|
31
|
-
*
|
32
|
-
*
|
34
|
+
* Generates a new rails application that's ready for immediate feature development.
|
35
|
+
* Generates an application that has best practices that apply to most projects baked in.
|
36
|
+
* Generates an application that includes specs for all build in functionality.
|
37
|
+
* Is a forum for discussing what should or should not be included as part of a standard stack.
|
33
38
|
|
34
39
|
## Installation
|
35
40
|
|
@@ -37,19 +42,22 @@ Raygun...
|
|
37
42
|
|
38
43
|
## Prerequisites
|
39
44
|
|
40
|
-
|
45
|
+
To generate an application, you only need the raygun gem.
|
46
|
+
|
47
|
+
To run your new application's specs or fire up its server, you'll need to meet these requirements.
|
41
48
|
|
42
|
-
* Ruby 1.9.3-p327 (rvm and rbenv supported)
|
43
49
|
* PostgreSQL 9.x with superuser 'postgres' with no password (```createuser -s postgres```)
|
44
50
|
* PhantomJS for JavaScript testing (```brew install phantomjs```)
|
45
51
|
|
46
|
-
|
52
|
+
The generated app will be configured to use the ruby version that was used to invoke raygun. If you're using
|
53
|
+
another ruby, just change the ```Gemfile```, ```.rvmrc``` and/or ```.rbenv-version``` as necessary.
|
47
54
|
|
48
55
|
## Usage
|
49
56
|
|
50
57
|
$ raygun your-project
|
51
58
|
|
52
|
-
Once your project is baked out, you can easily kick the wheels
|
59
|
+
Once your project is baked out, you can easily kick the wheels. Be sure that you have the prerequities
|
60
|
+
covered (see above).
|
53
61
|
|
54
62
|
$ cd your-project
|
55
63
|
$ gem install bundler
|
@@ -77,7 +85,7 @@ Once your project is baked out, you can easily kick the wheels:
|
|
77
85
|
|
78
86
|
Generate an example app using your local development version of raygun:
|
79
87
|
|
80
|
-
./bin/raygun tmp/example_app
|
88
|
+
$ ./bin/raygun tmp/example_app
|
81
89
|
|
82
90
|
## Changes
|
83
91
|
|
data/TODO.md
CHANGED
@@ -3,11 +3,8 @@
|
|
3
3
|
Looking for inspiration? Here are some ideas for things that still could be done. Don't forget to check the open issus too.
|
4
4
|
|
5
5
|
* Automated testing of raygun (e.g. generate an app and run its specs?)
|
6
|
-
* Raygun on CI
|
7
6
|
* Invite user flow
|
8
|
-
* Use cancan to allow users to edit only themselves and admins to edit any user
|
9
7
|
* Continue to improve bootstrap view templates
|
10
|
-
* CSS/less best practices for file organization
|
11
8
|
* JS/coffeescript best practices
|
12
9
|
* Add pagination to the default index scaffold (kaminari)
|
13
10
|
* Use foreigner for database constraints
|
data/app_prototype/.env
ADDED
data/app_prototype/.gitignore
CHANGED
File without changes
|
data/app_prototype/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm use ruby-1.9.3-p327@
|
1
|
+
rvm use ruby-1.9.3-p327@app-prototype --create
|
data/app_prototype/Gemfile
CHANGED
@@ -4,7 +4,7 @@ source 'https://rubygems.org'
|
|
4
4
|
ruby '1.9.3'
|
5
5
|
|
6
6
|
gem 'thin'
|
7
|
-
gem 'rails', '~> 3.2.
|
7
|
+
gem 'rails', '~> 3.2.11'
|
8
8
|
gem 'slim-rails'
|
9
9
|
gem 'jquery-rails'
|
10
10
|
gem 'sorcery'
|
@@ -20,12 +20,15 @@ group :assets do
|
|
20
20
|
gem 'less-rails-bootstrap'
|
21
21
|
gem 'coffee-rails'
|
22
22
|
gem 'uglifier'
|
23
|
-
|
23
|
+
|
24
|
+
# Heroku suggests that these gems aren't necessary, but they're required to compile less assets on deploy.
|
25
|
+
gem 'therubyracer'
|
26
|
+
gem 'libv8', '~> 3.11.8'
|
24
27
|
end
|
25
28
|
|
26
29
|
group :test, :development do
|
27
30
|
gem 'rspec-rails', '~> 2.12.0'
|
28
|
-
gem 'capybara',
|
31
|
+
gem 'capybara', '~> 2.0'
|
29
32
|
gem 'capybara-email'
|
30
33
|
gem 'factory_girl_rails'
|
31
34
|
gem 'jasminerice'
|
data/app_prototype/Procfile
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
web:
|
1
|
+
web: rails server -p $PORT
|
2
|
+
#worker: bundle exec rake jobs:work
|
data/app_prototype/README.md
CHANGED
@@ -1,31 +1,58 @@
|
|
1
|
-
|
2
|
-
========
|
1
|
+
# App Prototype
|
3
2
|
|
4
3
|
...
|
5
4
|
|
6
|
-
|
7
|
-
============
|
5
|
+
Generated with [Raygun](https://github.com/carbonfive/raygun).
|
8
6
|
|
9
|
-
|
10
|
-
* postgresql 9.? (user 'postgres' with no password)
|
7
|
+
# Requirements
|
11
8
|
|
12
|
-
|
13
|
-
=================
|
9
|
+
To run the specs or fire up the server, be sure you have these:
|
14
10
|
|
15
|
-
|
16
|
-
|
11
|
+
* Ruby 1.9.3-p327
|
12
|
+
* PostgreSQL 9.x with superuser 'postgres' with no password (```createuser -s postgres```)
|
13
|
+
* PhantomJS for JavaScript testing (```brew install phantomjs```)
|
17
14
|
|
18
|
-
|
19
|
-
=======================
|
15
|
+
# Development
|
20
16
|
|
21
|
-
|
17
|
+
### First Time Setup
|
22
18
|
|
23
|
-
|
24
|
-
===========
|
19
|
+
After cloning, run these commands to install missing gems and prepare the database.
|
25
20
|
|
26
|
-
$
|
21
|
+
$ gem install bundler
|
22
|
+
$ bundle update
|
23
|
+
$ rake db:setup db:sample_data
|
27
24
|
|
28
|
-
|
29
|
-
|
25
|
+
Note, ```rake db:sample_data``` loads a small set of data for development. Check out ```db/sample_data.rb``` for details.
|
26
|
+
|
27
|
+
### Running the Specs
|
28
|
+
|
29
|
+
To run all ruby and jasmine specs.
|
30
|
+
|
31
|
+
$ rake
|
32
|
+
|
33
|
+
Again, with coverage for the ruby specs:
|
34
|
+
|
35
|
+
$ rake spec:coverage
|
36
|
+
|
37
|
+
### Running the Application Locally
|
38
|
+
|
39
|
+
$ foreman start
|
40
|
+
$ open http://0.0.0.0:3000"
|
41
|
+
|
42
|
+
### Using Guard
|
43
|
+
|
44
|
+
Guard is configured to run ruby and jasmine specs, and also listen for livereload connections. Growl is used for notifications.
|
45
|
+
|
46
|
+
$ bundle exec guard
|
47
|
+
|
48
|
+
### Deploying to Heroku
|
49
|
+
|
50
|
+
Install the heroku toolbelt if you don't already have it (https://toolbelt.heroku.com/).
|
51
|
+
|
52
|
+
$ heroku apps:create app-prototype
|
53
|
+
$ git push heroku master
|
54
|
+
$ heroku run rake db:setup
|
55
|
+
|
56
|
+
# Considerations
|
30
57
|
|
31
58
|
...
|
@@ -20,17 +20,17 @@ class UsersController < ApplicationController
|
|
20
20
|
@user = User.new(params[:user])
|
21
21
|
|
22
22
|
if @user.save
|
23
|
-
redirect_to @user, notice:
|
23
|
+
redirect_to @user, notice: "User was successfully created."
|
24
24
|
else
|
25
|
-
render action:
|
25
|
+
render action: 'new'
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
def update
|
30
30
|
if @user.update_attributes(params[:user])
|
31
|
-
redirect_to @user, notice:
|
31
|
+
redirect_to @user, notice: "User was successfully updated."
|
32
32
|
else
|
33
|
-
render action:
|
33
|
+
render action: 'edit'
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -4,9 +4,9 @@
|
|
4
4
|
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
5
5
|
</head>
|
6
6
|
<body>
|
7
|
-
<h1>Welcome to
|
7
|
+
<h1>Welcome to App Prototype, <%= @user.email %></h1>
|
8
8
|
<p>
|
9
|
-
You have successfully signed up to
|
9
|
+
You have successfully signed up to app-prototype.herokuapp.com,
|
10
10
|
your username is: <%= @user.email %>.<br/>
|
11
11
|
</p>
|
12
12
|
<p>
|
@@ -1,7 +1,7 @@
|
|
1
|
-
Welcome to
|
1
|
+
Welcome to App Prototype, <%= @user.email %>!
|
2
2
|
===============================================
|
3
3
|
|
4
|
-
You have successfully signed up to
|
4
|
+
You have successfully signed up to app-prototype.herokuapp.com,
|
5
5
|
your username is: <%= @user.email %>.
|
6
6
|
|
7
7
|
To login to the site, just follow this link: <%= activation_url(@user.activation_token) %>
|
@@ -4,13 +4,13 @@
|
|
4
4
|
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
5
5
|
</head>
|
6
6
|
<body>
|
7
|
-
<h1>
|
7
|
+
<h1>Congratulations, <%= @user.email %>!</h1>
|
8
8
|
<p>
|
9
|
-
You have successfully activated your
|
9
|
+
You have successfully activated your App Prototype account,
|
10
10
|
your username is: <%= @user.email %>.<br/>
|
11
11
|
</p>
|
12
12
|
<p>
|
13
|
-
|
13
|
+
<%= link_to "Sign In Now", sign_in_url %>.
|
14
14
|
</p>
|
15
15
|
<p>Thanks for joining and have a great day!</p>
|
16
16
|
</body>
|
@@ -1,9 +1,9 @@
|
|
1
|
-
|
1
|
+
Congratulations, <%= @user.email %>!
|
2
2
|
===============================================
|
3
3
|
|
4
|
-
You have successfully activated your
|
4
|
+
You have successfully activated your App Prototype account,
|
5
5
|
your username is: <%= @user.email %>.
|
6
6
|
|
7
|
-
|
7
|
+
Go ahead and sign in to the site: <%= sign_in_url %>
|
8
8
|
|
9
9
|
Thanks for joining and have a great day!
|
@@ -6,10 +6,10 @@
|
|
6
6
|
<body>
|
7
7
|
<h1>Hello, <%= @user.email %></h1>
|
8
8
|
<p>
|
9
|
-
|
9
|
+
Someone requested to reset your password. If it wasn't you, just disregard this email.
|
10
10
|
</p>
|
11
11
|
<p>
|
12
|
-
To choose a new password,
|
12
|
+
To choose a new password, follow this link: <%= link_to reset_password_url(@user.reset_password_token), reset_password_url(@user.reset_password_token) %>.
|
13
13
|
</p>
|
14
14
|
<p>Have a great day!</p>
|
15
15
|
</body>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
Hello, <%= @user.email %>
|
2
2
|
===============================================
|
3
|
+
|
4
|
+
Someone requested to reset your password. If it wasn't you, just disregard this email.
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
To choose a new password, just follow this link: <%= reset_password_url(@user.reset_password_token) %>
|
6
|
+
To choose a new password, follow this link: <%= reset_password_url(@user.reset_password_token) %>
|
7
7
|
|
8
8
|
Have a great day!
|
@@ -63,7 +63,7 @@ AppPrototype::Application.configure do
|
|
63
63
|
|
64
64
|
# Log the query plan for queries taking more than this (works
|
65
65
|
# with SQLite, MySQL, and PostgreSQL)
|
66
|
-
|
66
|
+
config.active_record.auto_explain_threshold_in_seconds = 0.5
|
67
67
|
|
68
|
-
config.action_mailer.default_url_options = { host: '
|
68
|
+
config.action_mailer.default_url_options = { host: 'app-prototype-acceptance.herokuapp.com' }
|
69
69
|
end
|
@@ -65,5 +65,5 @@ AppPrototype::Application.configure do
|
|
65
65
|
# with SQLite, MySQL, and PostgreSQL)
|
66
66
|
# config.active_record.auto_explain_threshold_in_seconds = 0.5
|
67
67
|
|
68
|
-
config.action_mailer.default_url_options = { host: '
|
68
|
+
config.action_mailer.default_url_options = { host: 'app-prototype.herokuapp.com' }
|
69
69
|
end
|
@@ -22,7 +22,7 @@ AppPrototype::Application.configure do
|
|
22
22
|
config.action_dispatch.show_exceptions = false
|
23
23
|
|
24
24
|
# Disable request forgery protection in test environment
|
25
|
-
config.action_controller.allow_forgery_protection
|
25
|
+
config.action_controller.allow_forgery_protection = false
|
26
26
|
|
27
27
|
# Tell Action Mailer not to deliver emails to the real world.
|
28
28
|
# The :test delivery method accumulates sent emails in the
|
@@ -1,11 +1,13 @@
|
|
1
1
|
# http://www.mikeperham.com/2012/12/09/12-gems-of-christmas-4-mailcatcher-and-mail_view/
|
2
2
|
|
3
|
+
mailcatcher_port = 1025
|
4
|
+
|
3
5
|
begin
|
4
|
-
sock = TCPSocket.new('localhost',
|
6
|
+
sock = TCPSocket.new('localhost', mailcatcher_port)
|
5
7
|
sock.close
|
6
8
|
catcher = true
|
7
9
|
rescue
|
8
10
|
catcher = false
|
9
11
|
end
|
10
12
|
|
11
|
-
ActionMailer::Base.smtp_settings = (Rails.env.development? && catcher) ? { host: 'localhost', port:
|
13
|
+
ActionMailer::Base.smtp_settings = (Rails.env.development? && catcher) ? { host: 'localhost', port: mailcatcher_port, } : {}
|
data/app_prototype/db/schema.rb
CHANGED
@@ -46,6 +46,7 @@ ActiveRecord::Schema.define(:version => 20121128215337) do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
add_index "users", ["activation_token"], :name => "index_users_on_activation_token"
|
49
|
+
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
|
49
50
|
add_index "users", ["last_logout_at", "last_activity_at"], :name => "index_users_on_last_logout_at_and_last_activity_at"
|
50
51
|
add_index "users", ["remember_me_token"], :name => "index_users_on_remember_me_token"
|
51
52
|
add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token"
|
data/bin/raygun
CHANGED
@@ -19,11 +19,16 @@ unless ARGV[0]
|
|
19
19
|
exit 1
|
20
20
|
end
|
21
21
|
|
22
|
-
app_dir
|
23
|
-
|
22
|
+
app_dir = ARGV[0]
|
23
|
+
app_name = File.basename(app_dir).gsub(/\s+/, '-')
|
24
|
+
app_name_dash = app_name.gsub('_', '-')
|
25
|
+
app_name_snake = app_name.gsub('-', '_')
|
24
26
|
app_name_camel = camelize(app_name_snake)
|
25
27
|
app_name_title = titleize(app_name_snake)
|
26
28
|
|
29
|
+
ruby_version_patchlevel = `ruby -e 'print "#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"'`
|
30
|
+
ruby_version = `ruby -e 'print "#{RUBY_VERSION}"'`
|
31
|
+
|
27
32
|
puts
|
28
33
|
puts "Creating new app #{app_name_camel} in directory #{app_dir}..."
|
29
34
|
puts
|
@@ -32,9 +37,12 @@ FileUtils.cp_r(File.expand_path('../../app_prototype', __FILE__), app_dir)
|
|
32
37
|
|
33
38
|
Dir.chdir(app_dir) do
|
34
39
|
`find . -type f -print | xargs sed -i '' 's/AppPrototype/#{app_name_camel}/g'`
|
40
|
+
`find . -type f -print | xargs sed -i '' 's/app-prototype/#{app_name_dash}/g'`
|
35
41
|
`find . -type f -print | xargs sed -i '' 's/app_prototype/#{app_name_snake}/g'`
|
36
42
|
`find . -type f -print | xargs sed -i '' 's/App Prototype/#{app_name_title}/g'`
|
37
43
|
`sed -i '' 's/SUPER_SECRET_TOKEN_REPLACE_ME_TODO/#{SecureRandom.hex(128)}/' config/initializers/secret_token.rb`
|
44
|
+
`sed -i '' 's/1.9.3-p327/#{ruby_version_patchlevel}/g' .rvmrc .ruby-version`
|
45
|
+
`sed -i '' 's/1.9.3/#{ruby_version}/g' Gemfile`
|
38
46
|
|
39
47
|
puts "Done! Next steps..."
|
40
48
|
puts ""
|
data/lib/raygun/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: raygun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.17
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-01-
|
14
|
+
date: 2013-01-17 00:00:00.000000000 Z
|
15
15
|
dependencies: []
|
16
16
|
description: Carbon Five Rails application generator
|
17
17
|
email:
|
@@ -30,9 +30,10 @@ files:
|
|
30
30
|
- README.md
|
31
31
|
- Rakefile
|
32
32
|
- TODO.md
|
33
|
+
- app_prototype/.env
|
33
34
|
- app_prototype/.gitignore
|
34
|
-
- app_prototype/.rbenv-version
|
35
35
|
- app_prototype/.rspec
|
36
|
+
- app_prototype/.ruby-version
|
36
37
|
- app_prototype/.rvmrc
|
37
38
|
- app_prototype/Gemfile
|
38
39
|
- app_prototype/Guardfile
|
@@ -42,6 +43,7 @@ files:
|
|
42
43
|
- app_prototype/app/assets/javascripts/application.js
|
43
44
|
- app_prototype/app/assets/javascripts/users.js.coffee
|
44
45
|
- app_prototype/app/assets/stylesheets/_footer.less
|
46
|
+
- app_prototype/app/assets/stylesheets/_navbar.less
|
45
47
|
- app_prototype/app/assets/stylesheets/application.css.less
|
46
48
|
- app_prototype/app/controllers/application_controller.rb
|
47
49
|
- app_prototype/app/controllers/password_resets_controller.rb
|