Skip to content

Instantly share code, notes, and snippets.

@wincent
Created July 22, 2010 18:49
Show Gist options
  • Save wincent/486407 to your computer and use it in GitHub Desktop.
Save wincent/486407 to your computer and use it in GitHub Desktop.
#
#
# create a new Rails app
#
#
$ cd /tmp
$ rails --version
Rails 3.0.0.beta4
$ rails new demo
create
create README
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/views/layouts/application.html.erb
create app/models
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/secret_token.rb
create config/initializers/session_store.rb
create config/locales
create config/locales/en.yml
create config/boot.rb
create config/database.yml
create db
create db/seeds.rb
create doc
create doc/README_FOR_APP
create lib
create lib/tasks
create lib/tasks/.gitkeep
create log
create log/server.log
create log/production.log
create log/development.log
create log/test.log
create public
create public/404.html
create public/422.html
create public/500.html
create public/favicon.ico
create public/index.html
create public/robots.txt
create public/images
create public/images/rails.png
create public/stylesheets
create public/stylesheets/.gitkeep
create public/javascripts
create public/javascripts/application.js
create public/javascripts/controls.js
create public/javascripts/dragdrop.js
create public/javascripts/effects.js
create public/javascripts/prototype.js
create public/javascripts/rails.js
create script
create script/rails
create test
create test/performance/browsing_test.rb
create test/test_helper.rb
create test/fixtures
create test/functional
create test/integration
create test/unit
create tmp
create tmp/sessions
create tmp/sockets
create tmp/cache
create tmp/pids
create vendor/plugins
create vendor/plugins/.gitkeep
$ cd demo
#
#
# set up the Gemfile
#
#
$ cat > Gemfile <<HERE
source 'http://rubygems.org'
platforms :ruby18 do
gem 'rails', '3.0.0.beta4'
gem 'sqlite3-ruby', :require => 'sqlite3'
group :development do
gem 'rspec-rails', '>= 2.0.0.beta.18'
end
group :test do
gem 'capybara', :git => 'git://github.com/jnicklas/capybara.git'
gem 'culerity'
gem 'database_cleaner'
gem 'mongrel'
gem 'steak', :git => 'git://github.com/cavalle/steak.git'
end
end
platforms :jruby do
group :test do
gem 'celerity', '>= 0.8.0.beta.2'
gem 'jruby-openssl'
end
end
HERE
#
#
# install bundle under MRI (had to CTRL-C and retry 3 times due to timeouts)
#
#
$ bundle --version
Bundler version 1.0.0.beta.9
$ bundle install
Fetching git://github.com/jnicklas/capybara.git
remote: Counting objects: 4288, done.
remote: Compressing objects: 100% (1482/1482), done.
remote: Total 4288 (delta 2926), reused 4047 (delta 2785)
Receiving objects: 100% (4288/4288), 5.46 MiB | 623 KiB/s, done.
Resolving deltas: 100% (2926/2926), done.
Updating git://github.com/cavalle/steak.git
Fetching source index for http://rubygems.org/
Using rake (0.8.7)
Using abstract (1.0.0)
Using activesupport (3.0.0.beta4)
Using builder (2.1.2)
Using i18n (0.4.1)
Using activemodel (3.0.0.beta4)
Using erubis (2.6.6)
Using rack (1.1.0)
Using rack-mount (0.6.9)
Using rack-test (0.5.4)
Using tzinfo (0.3.22)
Using actionpack (3.0.0.beta4)
Using mime-types (1.16)
Using polyglot (0.3.1)
Using treetop (1.4.8)
Using mail (2.2.5)
Using actionmailer (3.0.0.beta4)
Using arel (0.4.0)
Using activerecord (3.0.0.beta4)
Using activeresource (3.0.0.beta4)
Using bundler (1.0.0.beta.9)
Using culerity (0.2.10)
Using nokogiri (1.4.2)
Using ffi (0.6.3)
Using json_pure (1.4.3)
^C
^C^C^C^C^C^C
Quitting...
$ bundle check
The git source git://github.com/jnicklas/capybara.git is not yet checked out. Please run `bundle install` before trying to start your application
$ bundle install
Updating git://github.com/jnicklas/capybara.git
Updating git://github.com/cavalle/steak.git
Fetching source index for http://rubygems.org/
^C
Quitting...
$ bundle install
Updating git://github.com/jnicklas/capybara.git
Updating git://github.com/cavalle/steak.git
Fetching source index for http://rubygems.org/
Using rake (0.8.7)
Using abstract (1.0.0)
Using activesupport (3.0.0.beta4)
Using builder (2.1.2)
Using i18n (0.4.1)
Using activemodel (3.0.0.beta4)
Using erubis (2.6.6)
Using rack (1.1.0)
Using rack-mount (0.6.9)
Using rack-test (0.5.4)
Using tzinfo (0.3.22)
Using actionpack (3.0.0.beta4)
Using mime-types (1.16)
Using polyglot (0.3.1)
Using treetop (1.4.8)
Using mail (2.2.5)
Using actionmailer (3.0.0.beta4)
Using arel (0.4.0)
Using activerecord (3.0.0.beta4)
Using activeresource (3.0.0.beta4)
Using bundler (1.0.0.beta.9)
Using culerity (0.2.10)
Using nokogiri (1.4.2)
Using ffi (0.6.3)
Using json_pure (1.4.3)
Installing rubyzip (0.9.4)
Installing selenium-webdriver (0.0.27)
Using capybara (0.3.9) from git://github.com/jnicklas/capybara.git (at master)
Using database_cleaner (0.5.2)
Using diff-lcs (1.1.2)
Installing thor (0.13.8)
Using railties (3.0.0.beta4)
Using rails (3.0.0.beta4)
Using rspec-core (2.0.0.beta.18)
Using rspec-expectations (2.0.0.beta.18)
Using rspec-mocks (2.0.0.beta.18)
Using rspec (2.0.0.beta.18)
Using webrat (0.7.1)
Installing rspec-rails (2.0.0.beta.18)
Using sqlite3-ruby (1.3.1)
Using steak (0.4.0.beta.1) from git://github.com/cavalle/steak.git (at master)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
$ bundle check
The Gemfile's dependencies are satisfied
#
#
# package into vendor/cache
#
#
$ bundle package
Using rake (0.8.7)
Using abstract (1.0.0)
Using activesupport (3.0.0.beta4)
Using builder (2.1.2)
Using i18n (0.4.1)
Using activemodel (3.0.0.beta4)
Using erubis (2.6.6)
Using rack (1.1.0)
Using rack-mount (0.6.9)
Using rack-test (0.5.4)
Using tzinfo (0.3.22)
Using actionpack (3.0.0.beta4)
Using mime-types (1.16)
Using polyglot (0.3.1)
Using treetop (1.4.8)
Using mail (2.2.5)
Using actionmailer (3.0.0.beta4)
Using arel (0.4.0)
Using activerecord (3.0.0.beta4)
Using activeresource (3.0.0.beta4)
Using culerity (0.2.10)
Using nokogiri (1.4.2)
Using ffi (0.6.3)
Using json_pure (1.4.3)
Using rubyzip (0.9.4)
Using selenium-webdriver (0.0.27)
Using capybara (0.3.9) from git://github.com/jnicklas/capybara.git (at master)
Using database_cleaner (0.5.2)
Using diff-lcs (1.1.2)
Using bundler (1.0.0.beta.9)
Using thor (0.13.8)
Using railties (3.0.0.beta4)
Using rails (3.0.0.beta4)
Using rspec-core (2.0.0.beta.18)
Using rspec-expectations (2.0.0.beta.18)
Using rspec-mocks (2.0.0.beta.18)
Using rspec (2.0.0.beta.18)
Using webrat (0.7.1)
Using rspec-rails (2.0.0.beta.18)
Using sqlite3-ruby (1.3.1)
Using steak (0.4.0.beta.1) from git://github.com/cavalle/steak.git (at master)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
Updating .gem files in vendor/cache
* rake-0.8.7.gem
* abstract-1.0.0.gem
* activesupport-3.0.0.beta4.gem
* builder-2.1.2.gem
* i18n-0.4.1.gem
* activemodel-3.0.0.beta4.gem
* erubis-2.6.6.gem
* rack-1.1.0.gem
* rack-mount-0.6.9.gem
* rack-test-0.5.4.gem
* tzinfo-0.3.22.gem
* actionpack-3.0.0.beta4.gem
* mime-types-1.16.gem
* polyglot-0.3.1.gem
* treetop-1.4.8.gem
* mail-2.2.5.gem
* actionmailer-3.0.0.beta4.gem
* arel-0.4.0.gem
* activerecord-3.0.0.beta4.gem
* activeresource-3.0.0.beta4.gem
* culerity-0.2.10.gem
* nokogiri-1.4.2.gem
* ffi-0.6.3.gem
* json_pure-1.4.3.gem
* rubyzip-0.9.4.gem
* selenium-webdriver-0.0.27.gem
* database_cleaner-0.5.2.gem
* diff-lcs-1.1.2.gem
* thor-0.13.8.gem
* railties-3.0.0.beta4.gem
* rails-3.0.0.beta4.gem
* rspec-core-2.0.0.beta.18.gem
* rspec-expectations-2.0.0.beta.18.gem
* rspec-mocks-2.0.0.beta.18.gem
* rspec-2.0.0.beta.18.gem
* webrat-0.7.1.gem
* rspec-rails-2.0.0.beta.18.gem
* sqlite3-ruby-1.3.1.gem
#
#
# now on the JRuby side
#
#
$ jruby -S bundle --version
Bundler version 1.0.0.beta.9
$ jruby -S bundle install
Using celerity (0.8.0.beta.2)
Using jruby-openssl (0.7)
Using bundler (1.0.0.beta.9)
Updating .gem files in vendor/cache
* celerity-0.8.0.beta.2.gem
* jruby-openssl-0.7.gem
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
#
#
# set up RSpec, Steak
#
#
$ rails g rspec:install
create .rspec
create spec
create spec/spec_helper.rb
create autotest
create autotest/discover.rb
$ rails g steak:install
Defaulting to Capybara...
create spec/controllers
create spec/acceptance/support
exist lib/tasks
create spec/acceptance/acceptance_helper.rb
create spec/acceptance/support/helpers.rb
create spec/acceptance/support/paths.rb
create lib/tasks/steak.rake
#
#
# make binstubs
#
#
$ bundle install --binstubs
Using rake (0.8.7)
Using abstract (1.0.0)
Using activesupport (3.0.0.beta4)
Using builder (2.1.2)
Using i18n (0.4.1)
Using activemodel (3.0.0.beta4)
Using erubis (2.6.6)
Using rack (1.1.0)
Using rack-mount (0.6.9)
Using rack-test (0.5.4)
Using tzinfo (0.3.22)
Using actionpack (3.0.0.beta4)
Using mime-types (1.16)
Using polyglot (0.3.1)
Using treetop (1.4.8)
Using mail (2.2.5)
Using actionmailer (3.0.0.beta4)
Using arel (0.4.0)
Using activerecord (3.0.0.beta4)
Using activeresource (3.0.0.beta4)
Using culerity (0.2.10)
Using nokogiri (1.4.2)
Using ffi (0.6.3)
Using json_pure (1.4.3)
Using rubyzip (0.9.4)
Using selenium-webdriver (0.0.27)
Using capybara (0.3.9) from git://github.com/jnicklas/capybara.git (at master)
Using database_cleaner (0.5.2)
Using diff-lcs (1.1.2)
Using bundler (1.0.0.beta.9)
Using thor (0.13.8)
Using railties (3.0.0.beta4)
Using rails (3.0.0.beta4)
Using rspec-core (2.0.0.beta.18)
Using rspec-expectations (2.0.0.beta.18)
Using rspec-mocks (2.0.0.beta.18)
Using rspec (2.0.0.beta.18)
Using webrat (0.7.1)
Using rspec-rails (2.0.0.beta.18)
Using sqlite3-ruby (1.3.1)
Using steak (0.4.0.beta.1) from git://github.com/cavalle/steak.git (at master)
Updating .gem files in vendor/cache
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
#
#
# confirm RSpec is working
#
#
$ bin/rspec spec
Finished in 0.00003 seconds
0 examples, 0 failures
#
#
# make a scaffold to play with
#
#
$ bin/rails g scaffold post
invoke active_record
create db/migrate/20100722181401_create_posts.rb
create app/models/post.rb
invoke rspec
create spec/models/post_spec.rb
route resources :posts
invoke scaffold_controller
create app/controllers/posts_controller.rb
invoke erb
create app/views/posts
create app/views/posts/index.html.erb
create app/views/posts/edit.html.erb
create app/views/posts/show.html.erb
create app/views/posts/new.html.erb
create app/views/posts/_form.html.erb
invoke rspec
create spec/controllers/posts_controller_spec.rb
create spec/views/posts/edit.html.erb_spec.rb
create spec/views/posts/index.html.erb_spec.rb
create spec/views/posts/new.html.erb_spec.rb
create spec/views/posts/show.html.erb_spec.rb
invoke helper
create spec/helpers/posts_helper_spec.rb
create spec/routing/posts_routing_spec.rb
invoke rspec
create spec/requests/posts_spec.rb
invoke helper
create app/helpers/posts_helper.rb
invoke rspec
invoke stylesheets
create public/stylesheets/scaffold.css
$ bin/rake RAILS_ENV=test db:migrate
(in /private/tmp/demo)
== CreatePosts: migrating ====================================================
-- create_table(:posts)
-> 0.0008s
== CreatePosts: migrated (0.0009s) ===========================================
#
#
# confirm RSpec still working
#
#
$ bin/rspec spec
...............**............
Finished in 0.36877 seconds
29 examples, 0 failures, 2 pending
Pending:
PostsHelper add some examples to (or delete) /private/tmp/demo/spec/helpers/posts_helper_spec.rb
# Not Yet Implemented
# ./spec/helpers/posts_helper_spec.rb:14
Post add some examples to (or delete) /private/tmp/demo/spec/models/post_spec.rb
# Not Yet Implemented
# ./spec/models/post_spec.rb:4
#
#
# make an acceptance spec which uses Culerity/Celerity
#
#
$ echo 'Capybara.current_driver = :culerity' > spec/acceptance/support/capybara.rb
$ cat > spec/acceptance/demo_spec.rb <<HERE
require File.expand_path('acceptance_helper', File.dirname(__FILE__))
feature 'hanging' do
scenario 'visiting' do
visit '/posts'
page.should have_content('Listing posts')
end
end
HERE
#
#
# watch it explode
#
#
$ bin/rspec spec/acceptance
F
Finished in 5.42 seconds
1 example, 1 failure
1) hanging visiting
Failure/Error: visit '/posts'
(eval):1:in `process_result': compile error
(eval):1: Invalid char `\033' in expression
(eval):1: syntax error, unexpected tIDENTIFIER, expecting ']'
Could not find celerity-0.8.0.beta.2 in any of the sources
^
# /Library/Ruby/Gems/1.8/gems/culerity-0.2.10/lib/culerity/remote_object_proxy.rb:50:in `process_result'
# /Library/Ruby/Gems/1.8/gems/culerity-0.2.10/lib/culerity/remote_object_proxy.rb:40:in `eval'
# /Library/Ruby/Gems/1.8/gems/culerity-0.2.10/lib/culerity/remote_object_proxy.rb:50:in `process_result'
# /Library/Ruby/Gems/1.8/gems/culerity-0.2.10/lib/culerity/remote_object_proxy.rb:40:in `send_remote'
# /Library/Ruby/Gems/1.8/gems/culerity-0.2.10/lib/culerity/remote_object_proxy.rb:25:in `method_missing'
# /Library/Ruby/Gems/1.8/gems/culerity-0.2.10/lib/culerity/remote_browser_proxy.rb:8:in `initialize'
# /Users/wincent/.bundle/bundler/gems/capybara-c6edcf7/lib/capybara/driver/culerity_driver.rb:17:in `new'
# /Users/wincent/.bundle/bundler/gems/capybara-c6edcf7/lib/capybara/driver/culerity_driver.rb:17:in `browser'
# /Users/wincent/.bundle/bundler/gems/capybara-c6edcf7/lib/capybara/driver/celerity_driver.rb:97:in `visit'
# /Users/wincent/.bundle/bundler/gems/capybara-c6edcf7/lib/capybara/session.rb:134:in `visit'
# /Users/wincent/.bundle/bundler/gems/capybara-c6edcf7/lib/capybara/dsl.rb:93:in `visit'
# ./spec/acceptance/demo_spec.rb:4
# /Library/Ruby/Gems/1.8/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:212:in `inject'
#
#
# double check the bundle on the JRuby side
#
#
$ jruby -S bundle check
The Gemfile's dependencies are satisfied
$ jruby -S bundle show
Gems included by the bundle:
* bundler (1.0.0.beta.9)
* celerity (0.8.0.beta.2)
* jruby-openssl (0.7)
$ jruby -S bundle show celerity
/usr/local/jruby-1.5.1/lib/ruby/gems/1.8/gems/celerity-0.8.0.beta.2
$ jruby -S gem list
*** LOCAL GEMS ***
bundler (1.0.0.beta.9, 1.0.0.beta.8)
celerity (0.8.0.beta.2)
jruby-openssl (0.7)
rubygems-update (1.3.7)
#
#
# suppress '-rbundler/setup' from RUBYOPT
#
#
$ cat >> spec/spec_helper.rb <<HERE
if ENV['RUBYOPT']
ENV['RUBYOPT'] = ENV['RUBYOPT'].gsub(%r{-r\s*bundler/setup}, '')
end
HERE
#
#
# now it works
#
#
$ bin/rspec spec/acceptance
.
Finished in 5.96 seconds
1 example, 0 failures
$ cd /tmp
$ rails new demo
$ cd demo
$ cat > Gemfile <<HERE
source 'http://rubygems.org'
platforms :ruby18 do
gem 'rails', '3.0.0.beta4'
gem 'sqlite3-ruby', :require => 'sqlite3'
group :development do
gem 'rspec-rails', '>= 2.0.0.beta.18'
end
group :test do
gem 'capybara', :git => 'git://github.com/jnicklas/capybara.git'
gem 'culerity'
gem 'database_cleaner'
gem 'mongrel'
gem 'steak', :git => 'git://github.com/cavalle/steak.git'
end
end
platforms :jruby do
group :test do
gem 'celerity', '>= 0.8.0.beta.2'
gem 'jruby-openssl'
end
end
HERE
$ bundle install
$ bundle package
$ jruby -S bundle install
$ rails g rspec:install
$ rails g steak:install
$ bundle install --binstubs
$ bin/rails g scaffold post
$ bin/rake RAILS_ENV=test db:migrate
$ echo 'Capybara.current_driver = :culerity' > spec/acceptance/support/capybara.rb
$ cat > spec/acceptance/demo_spec.rb <<HERE
require File.expand_path('acceptance_helper', File.dirname(__FILE__))
feature 'hanging' do
scenario 'visiting' do
visit '/posts'
page.should have_content('Listing posts')
end
end
HERE
$ bin/rspec spec/acceptance
$ cat >> spec/spec_helper.rb <<HERE
if ENV['RUBYOPT']
ENV['RUBYOPT'] = ENV['RUBYOPT'].gsub(%r{-r\s*bundler/setup}, '')
end
HERE
$ bin/rspec spec/acceptance
@clayton
Copy link

clayton commented Dec 21, 2010

I have been having the same problem with cucumber for ages, finally switched to selenium to get around it, but this worked great. I just had to add the RUBYOPT stuff to my env.rb file and cucumber worked with culerity again. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment