da-suspenders 1.3.1 → 2.0.0
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/.rspec +1 -0
- data/CHANGELOG.md +17 -0
- data/README.md +2 -2
- data/Rakefile +36 -15
- data/da-suspenders.gemspec +3 -4
- data/lib/da-suspenders/version.rb +1 -1
- data/spec/test_project_spec.rb +43 -0
- data/template/da-suspenders.rb +22 -19
- data/template/trout/Gemfile +20 -21
- data/template/trout/app/views/kaminari/_first_page.html.erb +12 -0
- data/template/trout/app/views/kaminari/_gap.html.erb +11 -0
- data/template/trout/app/views/kaminari/_last_page.html.erb +13 -0
- data/template/trout/app/views/kaminari/_next_page.html.erb +12 -0
- data/template/trout/app/views/kaminari/_page.html.erb +12 -0
- data/template/trout/app/views/kaminari/_paginator.html.erb +25 -0
- data/template/trout/app/views/kaminari/_prev_page.html.erb +13 -0
- data/template/trout/config/locales/de.yml +30 -35
- data/template/trout/config/locales/kaminari.de.yml +8 -0
- metadata +53 -37
- data/features/running_cucumber.feature +0 -45
- data/features/step_definitions/shell.rb +0 -34
- data/features/support/env.rb +0 -0
- data/template/files/factory_girl_steps.rb +0 -1
- data/template/trout/config/initializers/will_paginate.rb +0 -4
- data/template/trout/features/step_definitions/js_steps.rb +0 -3
data/.rspec
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--color
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
## 2.0.0 (2012-12-21)
|
|
2
|
+
* Require Ruby 1.9 (drop support for Ruby 1.8)
|
|
3
|
+
* Update Rails to 3.2.9.
|
|
4
|
+
* Use Kaminari instead of will_paginate.
|
|
5
|
+
* Use Steak instead of Cucumber.
|
|
6
|
+
* Update bootstrap-sass to ~> 2.2.1.1 (Bootstrap 2.2.1), move to :assets-group in Gemfile.
|
|
7
|
+
* Update factory_girl_rails to ~> 4.1.0.
|
|
8
|
+
* Update Mongoid to ~> 3.0.15.
|
|
9
|
+
* Use thousands delimiter for number\_to\_precision and number\_to\_percentage.
|
|
10
|
+
* Disable HTML5 features in simple_form.
|
|
11
|
+
* Minor updates: rspec-rails ~> 2.12.0, simple_form ~> 2.0.4, capybara-webkit ~> 0.13.0, database_cleaner ~> 0.9.1, timecop ~> 0.5.5
|
|
12
|
+
* New optional Gem (commented out by default): fix_microsoft_links, font-awesome-rails.
|
|
13
|
+
* Specify version constraints for all gems.
|
|
14
|
+
* Use pry-rails (enables pry for Rails console).
|
|
15
|
+
* Use thin as development server.
|
|
16
|
+
* Always activate debugger gem (in test and development environments).
|
|
17
|
+
|
|
1
18
|
## 1.3.1 (2012-06-14)
|
|
2
19
|
* Update to Rails 3.2.6
|
|
3
20
|
* Now works with Ruby 1.9 (added encoding comments where necessary)
|
data/README.md
CHANGED
|
@@ -41,7 +41,7 @@ It includes application gems like:
|
|
|
41
41
|
|
|
42
42
|
* [bootstrap-sass](https://github.com/thomas-mcdonald/bootstrap-sass), bringing [Twitter Bootstrap](http://twitter.github.com/bootstrap/) to the Rails asset pipeline.
|
|
43
43
|
* [Compass](https://github.com/chriseppstein/compass), a [Sass-based](http://sass-lang.com/) CSS Meta-Framework
|
|
44
|
-
* [
|
|
44
|
+
* [Kaminari](https://github.com/amatsuda/kaminari) for easy pagination (view templates modified to be compatible with Bootstrap)
|
|
45
45
|
* [Paperclip](https://github.com/thoughtbot/paperclip) or [CarrierWave](https://github.com/jnicklas/carrierwave) for file uploads
|
|
46
46
|
* [simple_form](https://github.com/plataformatec/simple_form) for better forms
|
|
47
47
|
* [Devise](https://github.com/plataformatec/devise) and [CanCan](https://github.com/ryanb/cancan) for authentication and authorization
|
|
@@ -51,7 +51,7 @@ It includes application gems like:
|
|
|
51
51
|
|
|
52
52
|
And testing gems like:
|
|
53
53
|
|
|
54
|
-
* [
|
|
54
|
+
* [Steak](https://github.com/cavalle/steak) and [Capybara-Webkit](https://github.com/thoughtbot/capybara-webkit) for integration testing including Javascript behavior
|
|
55
55
|
* [RSpec](https://github.com/rspec/rspec) for awesome, readable isolation testing
|
|
56
56
|
* [Factory Girl](https://github.com/thoughtbot/factory_girl) for easier creation of test data
|
|
57
57
|
* [Timecop](https://github.com/jtrupiano/timecop) for dealing with time
|
data/Rakefile
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require "bundler"
|
|
2
|
-
require
|
|
2
|
+
require 'rspec/core/rake_task'
|
|
3
3
|
|
|
4
4
|
Bundler::GemHelper.install_tasks
|
|
5
5
|
|
|
@@ -9,25 +9,41 @@ Bundler::GemHelper.install_tasks
|
|
|
9
9
|
#
|
|
10
10
|
#############################################################################
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
RSpec::Core::RakeTask.new(:spec)
|
|
13
13
|
|
|
14
14
|
TEST_PROJECT = "test_project"
|
|
15
15
|
|
|
16
|
+
desc "Generate and test projects with Active Record and Mongoid"
|
|
17
|
+
task :test => ['test:active_record', 'test:mongoid']
|
|
18
|
+
|
|
16
19
|
namespace :test do
|
|
17
|
-
desc "
|
|
18
|
-
task :
|
|
19
|
-
|
|
20
|
+
desc "Generate and test a project with Active Record"
|
|
21
|
+
task :active_record do
|
|
22
|
+
puts "\n=== Generating and testing a project with Active Record ==="
|
|
23
|
+
Rake::Task["test_project:generate_active_record"].invoke
|
|
24
|
+
sh "bundle exec rake spec"
|
|
25
|
+
end
|
|
20
26
|
|
|
27
|
+
desc "Generate and test a project with Mongoid"
|
|
28
|
+
task :mongoid do
|
|
29
|
+
Rake::Task["test_project:generate_mongoid"].invoke
|
|
30
|
+
sh "bundle exec rake spec"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
|
|
21
35
|
namespace :test_project do
|
|
22
|
-
desc '
|
|
23
|
-
task :
|
|
24
|
-
|
|
25
|
-
repo = (ENV['REPO'] || "file://#{Dir.pwd}").to_s
|
|
26
|
-
with_mongoid = ENV["WITH_MONGOID"] ? "--with-mongoid" : ""
|
|
27
|
-
sh 'ruby', 'bin/da-suspenders', 'create', TEST_PROJECT, with_mongoid, repo
|
|
36
|
+
desc 'Generate a new test project with ActiveRecord. Pass REPO=... to change the Suspenders repo (defaults to dir with Rakefile).'
|
|
37
|
+
task :generate_active_record => :clean_env do
|
|
38
|
+
generate_test_project(:with_mongoid => false)
|
|
28
39
|
end
|
|
29
40
|
|
|
30
|
-
desc '
|
|
41
|
+
desc 'Generate a new test project with Mongoid. Pass REPO=... to change the Suspenders repo (defaults to dir with Rakefile).'
|
|
42
|
+
task :generate_mongoid => :clean_env do
|
|
43
|
+
generate_test_project(:with_mongoid => true)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
desc 'Remove test project'
|
|
31
47
|
task :destroy => :clean_env do
|
|
32
48
|
FileUtils.cd TEST_PROJECT
|
|
33
49
|
sh "bundle exec rake db:drop"
|
|
@@ -36,11 +52,16 @@ namespace :test_project do
|
|
|
36
52
|
end
|
|
37
53
|
end
|
|
38
54
|
|
|
39
|
-
desc 'Run the test suite'
|
|
40
|
-
task :default => ['test:full']
|
|
41
|
-
|
|
42
55
|
task :clean_env do
|
|
43
56
|
# Make sure to have a non-bundled ENV for generating the test project, even when running via "bundle exec rake ..."
|
|
44
57
|
ENV["RUBYOPT"] = nil
|
|
45
58
|
ENV["BUNDLE_GEMFILE"] = nil
|
|
46
59
|
end
|
|
60
|
+
|
|
61
|
+
def generate_test_project(options)
|
|
62
|
+
FileUtils.rm_rf(TEST_PROJECT)
|
|
63
|
+
repo = (ENV['REPO'] || "file://#{Dir.pwd}").to_s
|
|
64
|
+
with_mongoid = options[:with_mongoid] ? "--with-mongoid" : ""
|
|
65
|
+
sh 'ruby', 'bin/da-suspenders', 'create', TEST_PROJECT, with_mongoid, repo
|
|
66
|
+
end
|
|
67
|
+
|
data/da-suspenders.gemspec
CHANGED
|
@@ -12,13 +12,12 @@ Gem::Specification.new do |s|
|
|
|
12
12
|
|
|
13
13
|
s.required_rubygems_version = ">= 1.3.6"
|
|
14
14
|
|
|
15
|
-
s.add_dependency('rails', '3.2.
|
|
16
|
-
s.add_dependency('bundler', '>= 1.
|
|
15
|
+
s.add_dependency('rails', '3.2.9')
|
|
16
|
+
s.add_dependency('bundler', '>= 1.2.1')
|
|
17
17
|
s.add_dependency('trout', '~> 0.3')
|
|
18
18
|
|
|
19
19
|
s.add_development_dependency('rake', '~> 0.9.2')
|
|
20
|
-
s.add_development_dependency('
|
|
21
|
-
s.add_development_dependency('rspec-expectations')
|
|
20
|
+
s.add_development_dependency('rspec', '~> 2.11.0')
|
|
22
21
|
|
|
23
22
|
s.files = `git ls-files`.split("\n")
|
|
24
23
|
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
describe "the test project" do
|
|
2
|
+
|
|
3
|
+
def create_application_spec_file
|
|
4
|
+
File.open("spec/acceptance/application_spec.rb", "w") do |file|
|
|
5
|
+
file.write %q{
|
|
6
|
+
require "acceptance/acceptance_helper"
|
|
7
|
+
|
|
8
|
+
feature "The application works correctly" do
|
|
9
|
+
scenario "jQuery and Modernizr work correctly", :js => true do
|
|
10
|
+
visit "/users"
|
|
11
|
+
page.evaluate_script("$('html').hasClass('js')").should be_true
|
|
12
|
+
page.evaluate_script("$('html').hasClass('no-js')").should be_false
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
scenario "Stylesheets are generated correctly" do
|
|
16
|
+
FileUtils.rm_rf ["#{Rails.root}/tmp/cache/assets", "#{Rails.root}/tmp/cache/sass"]
|
|
17
|
+
visit "/assets/application.css"
|
|
18
|
+
page.should have_content "/bootstrap-sass-2."
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
}.gsub(/^ /, "")
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
before(:all) do
|
|
26
|
+
# Make sure to have a non-bundled ENV, even when running via "bundle exec cucumber ..."
|
|
27
|
+
ENV["RUBYOPT"] = nil
|
|
28
|
+
ENV["BUNDLE_GEMFILE"] = nil
|
|
29
|
+
|
|
30
|
+
Dir.chdir('test_project') do
|
|
31
|
+
system "rails g scaffold user username:string"
|
|
32
|
+
system "bundle exec rake db:drop db:create db:migrate"
|
|
33
|
+
create_application_spec_file
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "works correctly" do
|
|
38
|
+
Dir.chdir("test_project") do
|
|
39
|
+
system "bundle exec rake spec"
|
|
40
|
+
$?.should be_success
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
data/template/da-suspenders.rb
CHANGED
|
@@ -31,11 +31,7 @@ def create_gemfile_and_install_gems
|
|
|
31
31
|
say "Creating Gemfile and installing gems (this may take a while)", :yellow
|
|
32
32
|
trout "Gemfile"
|
|
33
33
|
if ENV["WITH_MONGOID"]
|
|
34
|
-
|
|
35
|
-
%Q{gem "mongoid", "~> 2.4"\n} +
|
|
36
|
-
%Q{gem "bson_ext", "~> 1.5"},
|
|
37
|
-
:after => 'gem "mysql2"'
|
|
38
|
-
gsub_file "Gemfile", 'gem "mysql2"', ""
|
|
34
|
+
gsub_file "Gemfile", %r{gem "mysql2".*}, 'gem "mongoid", "~> 3.0.15"'
|
|
39
35
|
end
|
|
40
36
|
run "bundle install"
|
|
41
37
|
end
|
|
@@ -124,7 +120,8 @@ end
|
|
|
124
120
|
|
|
125
121
|
def install_simple_form
|
|
126
122
|
say "Installing simple_form", :yellow
|
|
127
|
-
generate "simple_form:install --
|
|
123
|
+
generate "simple_form:install --bootstrap"
|
|
124
|
+
gsub_file "config/initializers/simple_form.rb", %r{ (b.use :html5)}, " #\\1"
|
|
128
125
|
end
|
|
129
126
|
|
|
130
127
|
def install_javascripts
|
|
@@ -134,19 +131,24 @@ def install_javascripts
|
|
|
134
131
|
trout "vendor/assets/javascripts/modernizr.js"
|
|
135
132
|
end
|
|
136
133
|
|
|
137
|
-
def
|
|
138
|
-
say "Installing
|
|
139
|
-
generate "
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
%{Capybara.javascript_driver = :webkit\n},
|
|
144
|
-
:before => %{Capybara.default_selector = :css}
|
|
145
|
-
if ENV["WITH_MONGOID"]
|
|
146
|
-
gsub_file "features/support/env.rb", "DatabaseCleaner.strategy = :transaction", "DatabaseCleaner.strategy = :truncation"
|
|
134
|
+
def install_kaminari
|
|
135
|
+
say "Installing Kaminari", :yellow
|
|
136
|
+
generate "kaminari:config"
|
|
137
|
+
# view files taken from https://github.com/gabetax/twitter-bootstrap-kaminari-views
|
|
138
|
+
%w{_first_page _last_page _page _prev_page _gap _next_page _paginator}.each do |file|
|
|
139
|
+
trout "app/views/kaminari/#{file}.html.erb"
|
|
147
140
|
end
|
|
148
|
-
|
|
149
|
-
|
|
141
|
+
trout "config/locales/kaminari.de.yml"
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def install_rspec_and_steak
|
|
145
|
+
say "Installing rspec and steak", :yellow
|
|
146
|
+
generate "rspec:install"
|
|
147
|
+
generate "steak:install"
|
|
148
|
+
gsub_file "spec/spec_helper.rb", %r{^ (config.fixture_path = )}, " #\\1"
|
|
149
|
+
gsub_file "spec/spec_helper.rb", %r{^ (config.use_transactional_fixtures = )}, " #\\1"
|
|
150
|
+
inject_into_file "spec/spec_helper.rb", %{\n config.before(:each) do\n DatabaseCleaner.clean_with(:truncation)\n end\n}, :before => /^end$/
|
|
151
|
+
append_to_file "spec/spec_helper.rb", "\nCapybara.javascript_driver = :webkit"
|
|
150
152
|
end
|
|
151
153
|
|
|
152
154
|
def cleanup
|
|
@@ -171,7 +173,8 @@ install_app_config
|
|
|
171
173
|
install_compass
|
|
172
174
|
install_simple_form
|
|
173
175
|
install_javascripts
|
|
174
|
-
|
|
176
|
+
install_kaminari
|
|
177
|
+
install_rspec_and_steak
|
|
175
178
|
cleanup
|
|
176
179
|
|
|
177
180
|
say "Rails app #{app_name} has been created successully!", :blue
|
data/template/trout/Gemfile
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
source 'https://rubygems.org'
|
|
2
|
-
|
|
3
|
-
gem "rails", "3.2.
|
|
2
|
+
ruby "1.9.3"
|
|
3
|
+
gem "rails", "3.2.9"
|
|
4
4
|
|
|
5
5
|
# Bundle edge Rails instead:
|
|
6
6
|
# gem 'rails', :git => 'git://github.com/rails/rails.git'
|
|
7
7
|
|
|
8
|
-
gem "mysql2"
|
|
8
|
+
gem "mysql2", "~> 0.3.11"
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
# Gems used only for assets and not required
|
|
@@ -19,9 +19,11 @@ group :assets do
|
|
|
19
19
|
|
|
20
20
|
gem 'uglifier', '>= 1.0.3'
|
|
21
21
|
gem 'compass-rails', '~> 1.0'
|
|
22
|
+
gem "bootstrap-sass", "~> 2.2.1.1"
|
|
23
|
+
# gem "font-awesome-rails", "~> 0.4.1"
|
|
22
24
|
end
|
|
23
25
|
|
|
24
|
-
gem "jquery-rails"
|
|
26
|
+
gem "jquery-rails", "~> 2.0.2"
|
|
25
27
|
|
|
26
28
|
# To use ActiveModel has_secure_password
|
|
27
29
|
# gem 'bcrypt-ruby', '~> 3.0.0'
|
|
@@ -31,20 +33,16 @@ gem "jquery-rails"
|
|
|
31
33
|
|
|
32
34
|
# Use unicorn as the app server
|
|
33
35
|
# gem 'unicorn'
|
|
36
|
+
gem "thin", "~> 1.4.0"
|
|
34
37
|
|
|
35
38
|
# Deploy with Capistrano
|
|
36
39
|
# gem 'capistrano'
|
|
37
40
|
|
|
38
|
-
# To use debugger
|
|
39
|
-
# gem 'debugger'
|
|
40
|
-
|
|
41
|
-
|
|
42
41
|
gem "trout", :git => "git://github.com/die-antwort/trout.git"
|
|
43
42
|
gem "app_config", :git => "git://github.com/die-antwort/app_config.git"
|
|
44
|
-
gem "simple_form"
|
|
45
|
-
gem "airbrake"
|
|
46
|
-
gem "
|
|
47
|
-
gem "bootstrap-sass", "~> 2.0.3"
|
|
43
|
+
gem "simple_form", "~> 2.0.4"
|
|
44
|
+
gem "airbrake", "~> 3.1.2"
|
|
45
|
+
gem "kaminari", "~> 0.14.1"
|
|
48
46
|
gem "da-js", "~> 0.1.0"
|
|
49
47
|
|
|
50
48
|
# More optional gems that we use quite often
|
|
@@ -53,7 +51,7 @@ gem "da-js", "~> 0.1.0"
|
|
|
53
51
|
# gem "carrierwave"
|
|
54
52
|
# gem "devise"
|
|
55
53
|
# gem "cancan"
|
|
56
|
-
|
|
54
|
+
# gem "fix_microsoft_links" # See https://github.com/spilliton/fix_microsoft_links
|
|
57
55
|
|
|
58
56
|
## RMagick as used by RefineryCMS, to make sure it works on Windows
|
|
59
57
|
#rmagick_options = { :require => false }
|
|
@@ -65,15 +63,16 @@ gem "da-js", "~> 0.1.0"
|
|
|
65
63
|
# RSpec needs to be in :development group to expose generators
|
|
66
64
|
# and rake tasks without having to type RAILS_ENV=test.
|
|
67
65
|
group :development, :test do
|
|
68
|
-
gem "rspec-rails", "~> 2.
|
|
69
|
-
gem "pry"
|
|
66
|
+
gem "rspec-rails", "~> 2.12.0"
|
|
67
|
+
gem "pry-rails", "~> 0.2.2"
|
|
68
|
+
gem "debugger", "~> 1.2.0"
|
|
70
69
|
end
|
|
71
70
|
|
|
72
71
|
group :test do
|
|
73
|
-
gem "
|
|
74
|
-
gem "factory_girl_rails", "~> 1.
|
|
75
|
-
gem "capybara-webkit"
|
|
76
|
-
gem "database_cleaner"
|
|
77
|
-
gem "launchy"
|
|
78
|
-
gem "timecop"
|
|
72
|
+
gem "steak", "~> 2.0.0"
|
|
73
|
+
gem "factory_girl_rails", "~> 4.1.0"
|
|
74
|
+
gem "capybara-webkit", "~> 0.13.0"
|
|
75
|
+
gem "database_cleaner", "~> 0.9.1"
|
|
76
|
+
gem "launchy", "~> 2.1.1"
|
|
77
|
+
gem "timecop", "~> 0.5.5"
|
|
79
78
|
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<%# Link to the "First" page
|
|
2
|
+
- available local variables
|
|
3
|
+
url: url to the first page
|
|
4
|
+
current_page: a page object for the currently displayed page
|
|
5
|
+
num_pages: total number of pages
|
|
6
|
+
per_page: number of items to fetch per page
|
|
7
|
+
remote: data-remote
|
|
8
|
+
-%>
|
|
9
|
+
<%= content_tag :li, :class => "first #{'disabled' if current_page.first?}" do %>
|
|
10
|
+
<%# FIXME: In Bootstrap 2.1.0 it will be possible to use a span tag for disabled pagination links %>
|
|
11
|
+
<%= link_to t("views.pagination.first"), (current_page.first? ? "#" : url), :remote => remote %>
|
|
12
|
+
<% end %>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<%# Non-link tag that stands for skipped pages...
|
|
2
|
+
- available local variables
|
|
3
|
+
current_page: a page object for the currently displayed page
|
|
4
|
+
num_pages: total number of pages
|
|
5
|
+
per_page: number of items to fetch per page
|
|
6
|
+
remote: data-remote
|
|
7
|
+
-%>
|
|
8
|
+
<li class="page gap disabled">
|
|
9
|
+
<%# FIXME: In Bootstrap 2.1.0 it will be possible to use a span tag for disabled pagination links %>
|
|
10
|
+
<a href="#" onclick="return false;"><%=t "views.pagination.truncate" %></a>
|
|
11
|
+
</li>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<%# Link to the "Last" page
|
|
2
|
+
- available local variables
|
|
3
|
+
url: url to the last page
|
|
4
|
+
current_page: a page object for the currently displayed page
|
|
5
|
+
num_pages: total number of pages
|
|
6
|
+
per_page: number of items to fetch per page
|
|
7
|
+
remote: data-remote
|
|
8
|
+
-%>
|
|
9
|
+
<%# "next" class present for border styling in twitter bootstrap %>
|
|
10
|
+
<%= content_tag :li, :class => "last next #{'disabled' if current_page.last?}" do %>
|
|
11
|
+
<%# FIXME: In Bootstrap 2.1.0 it will be possible to use a span tag for disabled pagination links %>
|
|
12
|
+
<%= link_to t("views.pagination.last"), (current_page.last? ? "#" : url), :remote => remote %>
|
|
13
|
+
<% end %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<%# Link to the "Next" page
|
|
2
|
+
- available local variables
|
|
3
|
+
url: url to the next page
|
|
4
|
+
current_page: a page object for the currently displayed page
|
|
5
|
+
num_pages: total number of pages
|
|
6
|
+
per_page: number of items to fetch per page
|
|
7
|
+
remote: data-remote
|
|
8
|
+
-%>
|
|
9
|
+
<%= content_tag :li, :class => "next #{'disabled' if current_page.last?}" do %>
|
|
10
|
+
<%# FIXME: In Bootstrap 2.1.0 it will be possible to use a span tag for disabled pagination links %>
|
|
11
|
+
<%= link_to t("views.pagination.next"), (current_page.last? ? "#" : url), :rel => "next", :remote => remote %>
|
|
12
|
+
<% end %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<%# Link showing page number
|
|
2
|
+
- available local variables
|
|
3
|
+
page: a page object for "this" page
|
|
4
|
+
url: url to this page
|
|
5
|
+
current_page: a page object for the currently displayed page
|
|
6
|
+
num_pages: total number of pages
|
|
7
|
+
per_page: number of items to fetch per page
|
|
8
|
+
remote: data-remote
|
|
9
|
+
-%>
|
|
10
|
+
<%= content_tag :li, :class => "page #{'active' if page.current?}" do %>
|
|
11
|
+
<%= link_to page, url, :remote => remote, :rel => (page.next? ? 'next' : (page.prev? ? 'prev' : nil)) %>
|
|
12
|
+
<% end %>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<%# The container tag
|
|
2
|
+
- available local variables
|
|
3
|
+
current_page: a page object for the currently displayed page
|
|
4
|
+
num_pages: total number of pages
|
|
5
|
+
per_page: number of items to fetch per page
|
|
6
|
+
remote: data-remote
|
|
7
|
+
paginator: the paginator that renders the pagination tags inside
|
|
8
|
+
-%>
|
|
9
|
+
<%= paginator.render do -%>
|
|
10
|
+
<div class="pagination">
|
|
11
|
+
<ul>
|
|
12
|
+
<%= first_page_tag %>
|
|
13
|
+
<%= prev_page_tag %>
|
|
14
|
+
<% each_page do |page| -%>
|
|
15
|
+
<% if page.left_outer? || page.right_outer? || page.inside_window? -%>
|
|
16
|
+
<%= page_tag page %>
|
|
17
|
+
<% elsif !page.was_truncated? -%>
|
|
18
|
+
<%= gap_tag %>
|
|
19
|
+
<% end -%>
|
|
20
|
+
<% end -%>
|
|
21
|
+
<%= next_page_tag %>
|
|
22
|
+
<%= last_page_tag %>
|
|
23
|
+
</ul>
|
|
24
|
+
</div>
|
|
25
|
+
<% end -%>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<%# Link to the "Previous" page
|
|
2
|
+
- available local variables
|
|
3
|
+
url: url to the previous page
|
|
4
|
+
current_page: a page object for the currently displayed page
|
|
5
|
+
num_pages: total number of pages
|
|
6
|
+
per_page: number of items to fetch per page
|
|
7
|
+
remote: data-remote
|
|
8
|
+
-%>
|
|
9
|
+
|
|
10
|
+
<%= content_tag :li, :class => "prev #{'disabled' if current_page.first?}" do %>
|
|
11
|
+
<%# FIXME: In Bootstrap 2.1.0 it will be possible to use a span tag for disabled pagination links %>
|
|
12
|
+
<%= link_to t("views.pagination.previous"), (current_page.first? ? "#" : url), :rel => "prev", :remote => remote %>
|
|
13
|
+
<% end %>
|
|
@@ -32,9 +32,9 @@ de:
|
|
|
32
32
|
- Freitag
|
|
33
33
|
- Samstag
|
|
34
34
|
formats:
|
|
35
|
-
default:
|
|
36
|
-
long:
|
|
37
|
-
short:
|
|
35
|
+
default: '%d.%m.%Y'
|
|
36
|
+
long: '%e. %B %Y'
|
|
37
|
+
short: '%e. %b'
|
|
38
38
|
month_names:
|
|
39
39
|
-
|
|
40
40
|
- Jänner
|
|
@@ -79,16 +79,16 @@ de:
|
|
|
79
79
|
other: mehr als %{count} Jahre
|
|
80
80
|
x_days:
|
|
81
81
|
one: ein Tag
|
|
82
|
-
other:
|
|
82
|
+
other: '%{count} Tage'
|
|
83
83
|
x_minutes:
|
|
84
84
|
one: eine Minute
|
|
85
|
-
other:
|
|
85
|
+
other: '%{count} Minuten'
|
|
86
86
|
x_months:
|
|
87
87
|
one: ein Monat
|
|
88
|
-
other:
|
|
88
|
+
other: '%{count} Monate'
|
|
89
89
|
x_seconds:
|
|
90
90
|
one: eine Sekunde
|
|
91
|
-
other:
|
|
91
|
+
other: '%{count} Sekunden'
|
|
92
92
|
prompts:
|
|
93
93
|
day: Tag
|
|
94
94
|
hour: Stunden
|
|
@@ -97,7 +97,7 @@ de:
|
|
|
97
97
|
second: Sekunden
|
|
98
98
|
year: Jahr
|
|
99
99
|
errors:
|
|
100
|
-
format:
|
|
100
|
+
format: '%{attribute} %{message}'
|
|
101
101
|
messages:
|
|
102
102
|
accepted: muss akzeptiert werden
|
|
103
103
|
blank: muss ausgefüllt werden
|
|
@@ -115,42 +115,42 @@ de:
|
|
|
115
115
|
not_a_number: ist keine Zahl
|
|
116
116
|
not_an_integer: muss ganzzahlig sein
|
|
117
117
|
odd: muss ungerade sein
|
|
118
|
-
record_invalid:
|
|
118
|
+
record_invalid: 'Gültigkeitsprüfung ist fehlgeschlagen: %{errors}'
|
|
119
119
|
taken: ist bereits vergeben
|
|
120
|
-
too_long: ist zu lang (
|
|
121
|
-
too_short: ist zu kurz (
|
|
120
|
+
too_long: ist zu lang (höchstens %{count} Zeichen)
|
|
121
|
+
too_short: ist zu kurz (mindestens %{count} Zeichen)
|
|
122
122
|
wrong_length: hat die falsche Länge (muss genau %{count} Zeichen haben)
|
|
123
123
|
template:
|
|
124
|
-
body:
|
|
124
|
+
body: 'Bitte überprüfen Sie die folgenden Felder:'
|
|
125
125
|
header:
|
|
126
|
-
one:
|
|
127
|
-
other:
|
|
126
|
+
one: 'Konnte %{model} nicht speichern: ein Fehler.'
|
|
127
|
+
other: 'Konnte %{model} nicht speichern: %{count} Fehler.'
|
|
128
128
|
helpers:
|
|
129
129
|
select:
|
|
130
130
|
prompt: Bitte wählen
|
|
131
131
|
submit:
|
|
132
|
-
create:
|
|
133
|
-
submit:
|
|
134
|
-
update:
|
|
132
|
+
create: '%{model} erstellen'
|
|
133
|
+
submit: '%{model} speichern'
|
|
134
|
+
update: '%{model} aktualisieren'
|
|
135
135
|
number:
|
|
136
136
|
currency:
|
|
137
137
|
format:
|
|
138
138
|
delimiter: .
|
|
139
|
-
format:
|
|
139
|
+
format: '%u %n'
|
|
140
140
|
precision: 2
|
|
141
|
-
separator:
|
|
141
|
+
separator: ','
|
|
142
142
|
significant: false
|
|
143
143
|
strip_insignificant_zeros: false
|
|
144
144
|
unit: €
|
|
145
145
|
format:
|
|
146
146
|
delimiter: .
|
|
147
147
|
precision: 2
|
|
148
|
-
separator:
|
|
148
|
+
separator: ','
|
|
149
149
|
significant: false
|
|
150
150
|
strip_insignificant_zeros: false
|
|
151
151
|
human:
|
|
152
152
|
decimal_units:
|
|
153
|
-
format:
|
|
153
|
+
format: '%n %u'
|
|
154
154
|
units:
|
|
155
155
|
billion:
|
|
156
156
|
one: Milliarde
|
|
@@ -168,7 +168,7 @@ de:
|
|
|
168
168
|
significant: true
|
|
169
169
|
strip_insignificant_zeros: true
|
|
170
170
|
storage_units:
|
|
171
|
-
format:
|
|
171
|
+
format: '%n %u'
|
|
172
172
|
units:
|
|
173
173
|
byte:
|
|
174
174
|
one: Byte
|
|
@@ -177,21 +177,16 @@ de:
|
|
|
177
177
|
kb: KB
|
|
178
178
|
mb: MB
|
|
179
179
|
tb: TB
|
|
180
|
-
percentage:
|
|
181
|
-
format:
|
|
182
|
-
delimiter: ''
|
|
183
|
-
precision:
|
|
184
|
-
format:
|
|
185
|
-
delimiter: ''
|
|
186
180
|
support:
|
|
187
181
|
array:
|
|
188
|
-
last_word_connector:
|
|
189
|
-
two_words_connector:
|
|
190
|
-
words_connector:
|
|
182
|
+
last_word_connector: ' und '
|
|
183
|
+
two_words_connector: ' und '
|
|
184
|
+
words_connector: ', '
|
|
191
185
|
time:
|
|
192
186
|
am: vormittags
|
|
193
187
|
formats:
|
|
194
|
-
default:
|
|
195
|
-
long:
|
|
196
|
-
short:
|
|
197
|
-
|
|
188
|
+
default: '%A, %d. %B %Y, %H:%M Uhr'
|
|
189
|
+
long: '%A, %d. %B %Y, %H:%M Uhr'
|
|
190
|
+
short: '%d. %B, %H:%M Uhr'
|
|
191
|
+
compact: '%d.%m. %H:%M'
|
|
192
|
+
pm: nachmittags
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: da-suspenders
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -10,33 +10,43 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2012-
|
|
13
|
+
date: 2012-12-21 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: rails
|
|
17
|
-
requirement:
|
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
|
18
18
|
none: false
|
|
19
19
|
requirements:
|
|
20
|
-
- - =
|
|
20
|
+
- - '='
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: 3.2.
|
|
22
|
+
version: 3.2.9
|
|
23
23
|
type: :runtime
|
|
24
24
|
prerelease: false
|
|
25
|
-
version_requirements:
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
+
none: false
|
|
27
|
+
requirements:
|
|
28
|
+
- - '='
|
|
29
|
+
- !ruby/object:Gem::Version
|
|
30
|
+
version: 3.2.9
|
|
26
31
|
- !ruby/object:Gem::Dependency
|
|
27
32
|
name: bundler
|
|
28
|
-
requirement:
|
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
34
|
none: false
|
|
30
35
|
requirements:
|
|
31
36
|
- - ! '>='
|
|
32
37
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 1.
|
|
38
|
+
version: 1.2.1
|
|
34
39
|
type: :runtime
|
|
35
40
|
prerelease: false
|
|
36
|
-
version_requirements:
|
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
42
|
+
none: false
|
|
43
|
+
requirements:
|
|
44
|
+
- - ! '>='
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 1.2.1
|
|
37
47
|
- !ruby/object:Gem::Dependency
|
|
38
48
|
name: trout
|
|
39
|
-
requirement:
|
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
|
40
50
|
none: false
|
|
41
51
|
requirements:
|
|
42
52
|
- - ~>
|
|
@@ -44,10 +54,15 @@ dependencies:
|
|
|
44
54
|
version: '0.3'
|
|
45
55
|
type: :runtime
|
|
46
56
|
prerelease: false
|
|
47
|
-
version_requirements:
|
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
58
|
+
none: false
|
|
59
|
+
requirements:
|
|
60
|
+
- - ~>
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: '0.3'
|
|
48
63
|
- !ruby/object:Gem::Dependency
|
|
49
64
|
name: rake
|
|
50
|
-
requirement:
|
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
|
51
66
|
none: false
|
|
52
67
|
requirements:
|
|
53
68
|
- - ~>
|
|
@@ -55,29 +70,28 @@ dependencies:
|
|
|
55
70
|
version: 0.9.2
|
|
56
71
|
type: :development
|
|
57
72
|
prerelease: false
|
|
58
|
-
version_requirements:
|
|
59
|
-
- !ruby/object:Gem::Dependency
|
|
60
|
-
name: cucumber
|
|
61
|
-
requirement: &70165356034780 !ruby/object:Gem::Requirement
|
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
62
74
|
none: false
|
|
63
75
|
requirements:
|
|
64
|
-
- -
|
|
76
|
+
- - ~>
|
|
65
77
|
- !ruby/object:Gem::Version
|
|
66
|
-
version:
|
|
67
|
-
type: :development
|
|
68
|
-
prerelease: false
|
|
69
|
-
version_requirements: *70165356034780
|
|
78
|
+
version: 0.9.2
|
|
70
79
|
- !ruby/object:Gem::Dependency
|
|
71
|
-
name: rspec
|
|
72
|
-
requirement:
|
|
80
|
+
name: rspec
|
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
|
73
82
|
none: false
|
|
74
83
|
requirements:
|
|
75
|
-
- -
|
|
84
|
+
- - ~>
|
|
76
85
|
- !ruby/object:Gem::Version
|
|
77
|
-
version:
|
|
86
|
+
version: 2.11.0
|
|
78
87
|
type: :development
|
|
79
88
|
prerelease: false
|
|
80
|
-
version_requirements:
|
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
90
|
+
none: false
|
|
91
|
+
requirements:
|
|
92
|
+
- - ~>
|
|
93
|
+
- !ruby/object:Gem::Version
|
|
94
|
+
version: 2.11.0
|
|
81
95
|
description: DIE ANTWORT's fork of thoughtbot's original Suspenders. Suspenders is
|
|
82
96
|
an upgradeable base Rails project.
|
|
83
97
|
email: stefan@die-antwort.eu
|
|
@@ -89,6 +103,7 @@ extra_rdoc_files:
|
|
|
89
103
|
- LICENSE
|
|
90
104
|
files:
|
|
91
105
|
- .gitignore
|
|
106
|
+
- .rspec
|
|
92
107
|
- CHANGELOG.md
|
|
93
108
|
- Gemfile
|
|
94
109
|
- LICENSE
|
|
@@ -96,28 +111,31 @@ files:
|
|
|
96
111
|
- Rakefile
|
|
97
112
|
- bin/da-suspenders
|
|
98
113
|
- da-suspenders.gemspec
|
|
99
|
-
- features/running_cucumber.feature
|
|
100
|
-
- features/step_definitions/shell.rb
|
|
101
|
-
- features/support/env.rb
|
|
102
114
|
- lib/create.rb
|
|
103
115
|
- lib/da-suspenders/version.rb
|
|
104
116
|
- lib/errors.rb
|
|
117
|
+
- spec/test_project_spec.rb
|
|
105
118
|
- template/da-suspenders.rb
|
|
106
|
-
- template/files/factory_girl_steps.rb
|
|
107
119
|
- template/files/mysql_database.yml.erb
|
|
108
120
|
- template/trout/Gemfile
|
|
109
121
|
- template/trout/app/assets/javascripts/application.js.coffee
|
|
110
122
|
- template/trout/app/assets/stylesheets/application.css.scss
|
|
111
123
|
- template/trout/app/helpers/body_class_helper.rb
|
|
112
124
|
- template/trout/app/helpers/bootstrap_helper.rb
|
|
125
|
+
- template/trout/app/views/kaminari/_first_page.html.erb
|
|
126
|
+
- template/trout/app/views/kaminari/_gap.html.erb
|
|
127
|
+
- template/trout/app/views/kaminari/_last_page.html.erb
|
|
128
|
+
- template/trout/app/views/kaminari/_next_page.html.erb
|
|
129
|
+
- template/trout/app/views/kaminari/_page.html.erb
|
|
130
|
+
- template/trout/app/views/kaminari/_paginator.html.erb
|
|
131
|
+
- template/trout/app/views/kaminari/_prev_page.html.erb
|
|
113
132
|
- template/trout/app/views/layouts/application.html.erb
|
|
114
133
|
- template/trout/app/views/shared/_flashes.html.erb
|
|
115
134
|
- template/trout/config/initializers/errors.rb
|
|
116
135
|
- template/trout/config/initializers/localize_with_fallback.rb
|
|
117
136
|
- template/trout/config/initializers/silence_asset_logging.rb
|
|
118
|
-
- template/trout/config/initializers/will_paginate.rb
|
|
119
137
|
- template/trout/config/locales/de.yml
|
|
120
|
-
- template/trout/
|
|
138
|
+
- template/trout/config/locales/kaminari.de.yml
|
|
121
139
|
- template/trout/lib/templates/rails/scaffold_controller/controller.rb
|
|
122
140
|
- template/trout/vendor/assets/javascripts/modernizr.js
|
|
123
141
|
homepage: http://github.com/die-antwort/da-suspenders
|
|
@@ -141,11 +159,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
141
159
|
version: 1.3.6
|
|
142
160
|
requirements: []
|
|
143
161
|
rubyforge_project:
|
|
144
|
-
rubygems_version: 1.8.
|
|
162
|
+
rubygems_version: 1.8.24
|
|
145
163
|
signing_key:
|
|
146
164
|
specification_version: 3
|
|
147
165
|
summary: Generate a Rails app using DIE ANTWORT's best practices.
|
|
148
|
-
test_files:
|
|
149
|
-
|
|
150
|
-
- features/step_definitions/shell.rb
|
|
151
|
-
- features/support/env.rb
|
|
166
|
+
test_files: []
|
|
167
|
+
has_rdoc:
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
Feature: Running cucumber in the generated project
|
|
2
|
-
|
|
3
|
-
Background:
|
|
4
|
-
Given I have a clean environment
|
|
5
|
-
|
|
6
|
-
Scenario: The generated project works correctly
|
|
7
|
-
Given I drop and create the required databases
|
|
8
|
-
And I generate "scaffold user username:string"
|
|
9
|
-
And I run the rake task "db:migrate"
|
|
10
|
-
And I create a file named "features/test.feature" with:
|
|
11
|
-
"""
|
|
12
|
-
Feature: The application works correctly
|
|
13
|
-
|
|
14
|
-
@javascript
|
|
15
|
-
Scenario: jQuery and Modernizr work correctly
|
|
16
|
-
When I visit the users page
|
|
17
|
-
Then the javascript expression "$('html').hasClass('js')" should return "true"
|
|
18
|
-
And the javascript expression "$('html').hasClass('no-js')" should return "false"
|
|
19
|
-
|
|
20
|
-
Scenario: Stylesheets are generated correctly
|
|
21
|
-
Given there are no cached assets
|
|
22
|
-
When I visit the application stylesheet
|
|
23
|
-
Then it should contain bootstrap
|
|
24
|
-
"""
|
|
25
|
-
And I create a file named "features/step_definitions/test_steps.rb" with:
|
|
26
|
-
"""
|
|
27
|
-
When /^I visit the users page/ do
|
|
28
|
-
visit "/users"
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
Given /^there are no cached assets$/ do
|
|
32
|
-
FileUtils.rm_rf ["#{Rails.root}/tmp/cache/assets", "#{Rails.root}/tmp/cache/sass"]
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
When /^I visit the application stylesheet$/ do
|
|
36
|
-
visit "/assets/application.css"
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
Then /^it should contain bootstrap$/ do
|
|
40
|
-
page.should have_content "/bootstrap-sass-2."
|
|
41
|
-
end
|
|
42
|
-
"""
|
|
43
|
-
When I run the rake task "cucumber"
|
|
44
|
-
Then I see a successful response in the shell
|
|
45
|
-
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
Given 'I have a clean environment' do
|
|
2
|
-
# Make sure to have a non-bundled ENV, even when running via "bundle exec cucumber ..."
|
|
3
|
-
ENV["RUBYOPT"] = nil
|
|
4
|
-
ENV["BUNDLE_GEMFILE"] = nil
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
When 'I run the rake task "$task_name"' do |task_name|
|
|
8
|
-
Dir.chdir('test_project') do
|
|
9
|
-
system("bundle exec rake #{task_name}")
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
When 'I generate "$generator_with_args"' do |generator_with_args|
|
|
14
|
-
Dir.chdir('test_project') do
|
|
15
|
-
system("rails generate #{generator_with_args}")
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
When 'I create a file named "$filename" with:' do |filename, content|
|
|
20
|
-
File.open("test_project/#{filename}", "w") do |file|
|
|
21
|
-
file.write(content)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
Then 'I see a successful response in the shell' do
|
|
26
|
-
$?.to_i.should == 0
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
When 'I drop and create the required databases' do
|
|
30
|
-
Dir.chdir('test_project') do
|
|
31
|
-
system("bundle exec rake db:drop")
|
|
32
|
-
system("bundle exec rake db:create")
|
|
33
|
-
end
|
|
34
|
-
end
|
data/features/support/env.rb
DELETED
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require 'factory_girl/step_definitions'
|