nil, "body"=>nil, "id"=>"1"}>
- >> f.
- Display all 152 possibilities? (y or n)
-
-Finally, when you're ready to resume execution, you can enter "cont".
-
-
-== Console
-
-The console is a Ruby shell, which allows you to interact with your
-application's domain model. Here you'll have all parts of the application
-configured, just like it is when the application is running. You can inspect
-domain models, change values, and save to the database. Starting the script
-without arguments will launch it in the development environment.
-
-To start the console, run rails console from the application
-directory.
-
-Options:
-
-* Passing the -s, --sandbox argument will rollback any modifications
- made to the database.
-* Passing an environment name as an argument will load the corresponding
- environment. Example: rails console production.
-
-To reload your controllers and models after launching the console run
-reload!
-
-More information about irb can be found at:
-link:http://www.rubycentral.org/pickaxe/irb.html
-
-
-== dbconsole
-
-You can go to the command line of your database directly through rails
-dbconsole. You would be connected to the database with the credentials
-defined in database.yml. Starting the script without arguments will connect you
-to the development database. Passing an argument will connect you to a different
-database, like rails dbconsole production. Currently works for MySQL,
-PostgreSQL and SQLite 3.
-
-== Description of Contents
-
-The default directory structure of a generated Ruby on Rails application:
-
- |-- app
- | |-- assets
- | | |-- images
- | | |-- javascripts
- | | `-- stylesheets
- | |-- controllers
- | |-- helpers
- | |-- mailers
- | |-- models
- | `-- views
- | `-- layouts
- |-- config
- | |-- environments
- | |-- initializers
- | `-- locales
- |-- db
- |-- doc
- |-- lib
- | |-- assets
- | `-- tasks
- |-- log
- |-- public
- |-- script
- |-- test
- | |-- fixtures
- | |-- functional
- | |-- integration
- | |-- performance
- | `-- unit
- |-- tmp
- | `-- cache
- | `-- assets
- `-- vendor
- |-- assets
- | |-- javascripts
- | `-- stylesheets
- `-- plugins
-
-app
- Holds all the code that's specific to this particular application.
-
-app/assets
- Contains subdirectories for images, stylesheets, and JavaScript files.
-
-app/controllers
- Holds controllers that should be named like weblogs_controller.rb for
- automated URL mapping. All controllers should descend from
- ApplicationController which itself descends from ActionController::Base.
-
-app/models
- Holds models that should be named like post.rb. Models descend from
- ActiveRecord::Base by default.
-
-app/views
- Holds the template files for the view that should be named like
- weblogs/index.html.erb for the WeblogsController#index action. All views use
- eRuby syntax by default.
-
-app/views/layouts
- Holds the template files for layouts to be used with views. This models the
- common header/footer method of wrapping views. In your views, define a layout
- using the layout :default and create a file named default.html.erb.
- Inside default.html.erb, call <% yield %> to render the view using this
- layout.
-
-app/helpers
- Holds view helpers that should be named like weblogs_helper.rb. These are
- generated for you automatically when using generators for controllers.
- Helpers can be used to wrap functionality for your views into methods.
-
-config
- Configuration files for the Rails environment, the routing map, the database,
- and other dependencies.
-
-db
- Contains the database schema in schema.rb. db/migrate contains all the
- sequence of Migrations for your schema.
-
-doc
- This directory is where your application documentation will be stored when
- generated using rake doc:app
-
-lib
- Application specific libraries. Basically, any kind of custom code that
- doesn't belong under controllers, models, or helpers. This directory is in
- the load path.
-
-public
- The directory available for the web server. Also contains the dispatchers and the
- default HTML files. This should be set as the DOCUMENT_ROOT of your web
- server.
-
-script
- Helper scripts for automation and generation.
-
-test
- Unit and functional tests along with fixtures. When using the rails generate
- command, template test files will be generated for you and placed in this
- directory.
-
-vendor
- External libraries that the application depends on. Also includes the plugins
- subdirectory. If the app has frozen rails, those gems also go here, under
- vendor/rails/. This directory is in the load path.
diff --git a/specs_e2e/rails_3_2/app/assets/stylesheets/application.css b/specs_e2e/rails_3_2/app/assets/stylesheets/application.css
deleted file mode 100644
index 3192ec8..0000000
--- a/specs_e2e/rails_3_2/app/assets/stylesheets/application.css
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * This is a manifest file that'll be compiled into application.css, which will include all the files
- * listed below.
- *
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
- * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
- *
- * You're free to add application-wide styles to this file and they'll appear at the top of the
- * compiled file, but it's generally better to create a new file per style scope.
- *
- *= require_self
- *= require_tree .
- */
diff --git a/specs_e2e/rails_3_2/app/controllers/welcome_controller.rb b/specs_e2e/rails_3_2/app/controllers/welcome_controller.rb
deleted file mode 100644
index f9b859b..0000000
--- a/specs_e2e/rails_3_2/app/controllers/welcome_controller.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-class WelcomeController < ApplicationController
- def index
- end
-end
diff --git a/specs_e2e/rails_3_2/app/helpers/application_helper.rb b/specs_e2e/rails_3_2/app/helpers/application_helper.rb
deleted file mode 100644
index de6be79..0000000
--- a/specs_e2e/rails_3_2/app/helpers/application_helper.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-module ApplicationHelper
-end
diff --git a/specs_e2e/rails_3_2/app/models/post.rb b/specs_e2e/rails_3_2/app/models/post.rb
deleted file mode 100644
index 6ea5652..0000000
--- a/specs_e2e/rails_3_2/app/models/post.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-class Post < OpenStruct
- def self.create!(attributes)
- create(attributes)
- end
-
- def self.create(attributes)
- @all ||= []
- post = new(attributes)
- @all << post
- attributes['all'] = @all.index(post)
- end
-
- def self.all
- @all ||= []
- @all
- end
-
- def self.delete_all
- @all = []
- end
-end
diff --git a/specs_e2e/rails_3_2/app/views/layouts/application.html.erb b/specs_e2e/rails_3_2/app/views/layouts/application.html.erb
deleted file mode 100644
index f3e14de..0000000
--- a/specs_e2e/rails_3_2/app/views/layouts/application.html.erb
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
- Rails32
- <%= stylesheet_link_tag "application", :media => "all" %>
- <%= csrf_meta_tags %>
-
-
-
-<%= yield %>
-
-
-
diff --git a/specs_e2e/rails_3_2/app/views/welcome/index.html.erb b/specs_e2e/rails_3_2/app/views/welcome/index.html.erb
deleted file mode 100644
index 8bb6947..0000000
--- a/specs_e2e/rails_3_2/app/views/welcome/index.html.erb
+++ /dev/null
@@ -1,24 +0,0 @@
-Posts
-
-
-
-
- Title |
- Body |
- Published |
- |
-
-
-
-
- <% Post.all.each do |post| %>
-
- <%= post.title %> |
- <%= post.body %> |
- <%= post.published %> |
-
- <% end %>
-
-
-
-
\ No newline at end of file
diff --git a/specs_e2e/rails_3_2/bin/rails b/specs_e2e/rails_3_2/bin/rails
deleted file mode 100755
index f8da2cf..0000000
--- a/specs_e2e/rails_3_2/bin/rails
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env ruby
-# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
-
-APP_PATH = File.expand_path('../../config/application', __FILE__)
-require File.expand_path('../../config/boot', __FILE__)
-require 'rails/commands'
diff --git a/specs_e2e/rails_3_2/config.ru b/specs_e2e/rails_3_2/config.ru
deleted file mode 100644
index 0ca80f2..0000000
--- a/specs_e2e/rails_3_2/config.ru
+++ /dev/null
@@ -1,4 +0,0 @@
-# This file is used by Rack-based servers to start the application.
-
-require ::File.expand_path('../config/environment', __FILE__)
-run Rails32::Application
diff --git a/specs_e2e/rails_3_2/config/application.rb b/specs_e2e/rails_3_2/config/application.rb
deleted file mode 100644
index 319c92c..0000000
--- a/specs_e2e/rails_3_2/config/application.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-require File.expand_path('../boot', __FILE__)
-
-# Pick the frameworks you want:
-# require "active_record/railtie"
-require "action_controller/railtie"
-require "action_mailer/railtie"
-require "active_resource/railtie"
-require "sprockets/railtie"
-# require "rails/test_unit/railtie"
-
-if defined?(Bundler)
- # If you precompile assets before deploying to production, use this line
- Bundler.require(*Rails.groups(:assets => %w(development test)))
- # If you want your assets lazily compiled in production, use this line
- # Bundler.require(:default, :assets, Rails.env)
-end
-
-module Rails32
- class Application < Rails::Application
- # Settings in config/environments/* take precedence over those specified here.
- # Application configuration should go into files in config/initializers
- # -- all .rb files in that directory are automatically loaded.
-
- # Custom directories with classes and modules you want to be autoloadable.
- # config.autoload_paths += %W(#{config.root}/extras)
-
- # Only load the plugins named here, in the order given (default is alphabetical).
- # :all can be used as a placeholder for all plugins not explicitly named.
- # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
-
- # Activate observers that should always be running.
- # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
-
- # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
- # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
- # config.time_zone = 'Central Time (US & Canada)'
-
- # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
- # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
- # config.i18n.default_locale = :de
-
- # Configure the default encoding used in templates for Ruby 1.9.
- config.encoding = "utf-8"
-
- # Configure sensitive parameters which will be filtered from the log file.
- config.filter_parameters += [:password]
-
- # Enable escaping HTML in JSON.
- config.active_support.escape_html_entities_in_json = true
-
- # Use SQL instead of Active Record's schema dumper when creating the database.
- # This is necessary if your schema can't be completely dumped by the schema dumper,
- # like if you have constraints or database-specific column types
- # config.active_record.schema_format = :sql
-
- # Enforce whitelist mode for mass assignment.
- # This will create an empty whitelist of attributes available for mass-assignment for all models
- # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
- # parameters by using an attr_accessible or attr_protected declaration.
- # config.active_record.whitelist_attributes = true
-
- # Enable the asset pipeline
- config.assets.enabled = true
-
- # Version of your assets, change this if you want to expire all your assets
- config.assets.version = '1.0'
- end
-end
diff --git a/specs_e2e/rails_3_2/config/boot.rb b/specs_e2e/rails_3_2/config/boot.rb
deleted file mode 100644
index 4489e58..0000000
--- a/specs_e2e/rails_3_2/config/boot.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-require 'rubygems'
-
-# Set up gems listed in the Gemfile.
-ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
-
-require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
diff --git a/specs_e2e/rails_3_2/config/environment.rb b/specs_e2e/rails_3_2/config/environment.rb
deleted file mode 100644
index d9d29cd..0000000
--- a/specs_e2e/rails_3_2/config/environment.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# Load the rails application
-require File.expand_path('../application', __FILE__)
-
-# Initialize the rails application
-Rails32::Application.initialize!
diff --git a/specs_e2e/rails_3_2/config/environments/development.rb b/specs_e2e/rails_3_2/config/environments/development.rb
deleted file mode 100644
index 2740e26..0000000
--- a/specs_e2e/rails_3_2/config/environments/development.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-Rails32::Application.configure do
- # Settings specified here will take precedence over those in config/application.rb
-
- # In the development environment your application's code is reloaded on
- # every request. This slows down response time but is perfect for development
- # since you don't have to restart the web server when you make code changes.
- config.cache_classes = false
-
- # Log error messages when you accidentally call methods on nil.
- config.whiny_nils = true
-
- # Show full error reports and disable caching
- config.consider_all_requests_local = true
- config.action_controller.perform_caching = false
-
- # Don't care if the mailer can't send
- config.action_mailer.raise_delivery_errors = false
-
- # Print deprecation notices to the Rails logger
- config.active_support.deprecation = :log
-
- # Only use best-standards-support built into browsers
- config.action_dispatch.best_standards_support = :builtin
-
-
- # Do not compress assets
- config.assets.compress = false
-
- # Expands the lines which load the assets
- config.assets.debug = true
-end
diff --git a/specs_e2e/rails_3_2/config/environments/production.rb b/specs_e2e/rails_3_2/config/environments/production.rb
deleted file mode 100644
index 1628562..0000000
--- a/specs_e2e/rails_3_2/config/environments/production.rb
+++ /dev/null
@@ -1,64 +0,0 @@
-Rails32::Application.configure do
- # Settings specified here will take precedence over those in config/application.rb
-
- # Code is not reloaded between requests
- config.cache_classes = true
-
- # Full error reports are disabled and caching is turned on
- config.consider_all_requests_local = false
- config.action_controller.perform_caching = true
-
- # Disable Rails's static asset server (Apache or nginx will already do this)
- config.serve_static_assets = false
-
- # Compress JavaScripts and CSS
- config.assets.compress = true
-
- # Don't fallback to assets pipeline if a precompiled asset is missed
- config.assets.compile = false
-
- # Generate digests for assets URLs
- config.assets.digest = true
-
- # Defaults to nil and saved in location specified by config.assets.prefix
- # config.assets.manifest = YOUR_PATH
-
- # Specifies the header that your server uses for sending files
- # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
- # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
-
- # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
- # config.force_ssl = true
-
- # See everything in the log (default is :info)
- # config.log_level = :debug
-
- # Prepend all log lines with the following tags
- # config.log_tags = [ :subdomain, :uuid ]
-
- # Use a different logger for distributed setups
- # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
-
- # Use a different cache store in production
- # config.cache_store = :mem_cache_store
-
- # Enable serving of images, stylesheets, and JavaScripts from an asset server
- # config.action_controller.asset_host = "http://assets.example.com"
-
- # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
- # config.assets.precompile += %w( search.js )
-
- # Disable delivery errors, bad email addresses will be ignored
- # config.action_mailer.raise_delivery_errors = false
-
- # Enable threaded mode
- # config.threadsafe!
-
- # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
- # the I18n.default_locale when a translation can not be found)
- config.i18n.fallbacks = true
-
- # Send deprecation notices to registered listeners
- config.active_support.deprecation = :notify
-
-end
diff --git a/specs_e2e/rails_3_2/config/environments/test.rb b/specs_e2e/rails_3_2/config/environments/test.rb
deleted file mode 100644
index 7d5f9a1..0000000
--- a/specs_e2e/rails_3_2/config/environments/test.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-Rails32::Application.configure do
- # Settings specified here will take precedence over those in config/application.rb
-
- # The test environment is used exclusively to run your application's
- # test suite. You never need to work with it otherwise. Remember that
- # your test database is "scratch space" for the test suite and is wiped
- # and recreated between test runs. Don't rely on the data there!
- config.cache_classes = ENV['CI'].present?
-
- # Configure static asset server for tests with Cache-Control for performance
- config.serve_static_assets = true
- config.static_cache_control = "public, max-age=3600"
-
- # Log error messages when you accidentally call methods on nil
- config.whiny_nils = true
-
- # Show full error reports and disable caching
- config.consider_all_requests_local = true
- config.action_controller.perform_caching = false
-
- # Raise exceptions instead of rendering exception templates
- config.action_dispatch.show_exceptions = false
-
- # Disable request forgery protection in test environment
- config.action_controller.allow_forgery_protection = false
-
- # Tell Action Mailer not to deliver emails to the real world.
- # The :test delivery method accumulates sent emails in the
- # ActionMailer::Base.deliveries array.
- config.action_mailer.delivery_method = :test
-
-
- # Print deprecation notices to the stderr
- config.active_support.deprecation = :stderr
-end
diff --git a/specs_e2e/rails_3_2/config/initializers/backtrace_silencers.rb b/specs_e2e/rails_3_2/config/initializers/backtrace_silencers.rb
deleted file mode 100644
index 59385cd..0000000
--- a/specs_e2e/rails_3_2/config/initializers/backtrace_silencers.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
-# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
-
-# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
-# Rails.backtrace_cleaner.remove_silencers!
diff --git a/specs_e2e/rails_3_2/config/initializers/secret_token.rb b/specs_e2e/rails_3_2/config/initializers/secret_token.rb
deleted file mode 100644
index d591567..0000000
--- a/specs_e2e/rails_3_2/config/initializers/secret_token.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Your secret key for verifying the integrity of signed cookies.
-# If you change this key, all old signed cookies will become invalid!
-# Make sure the secret is at least 30 characters and all random,
-# no regular words or you'll be exposed to dictionary attacks.
-Rails32::Application.config.secret_token = '61e5f7b99b121d3cc9287bf1843d176ba0f1212f9f4788e3939fd1c82316c7e05eb2c0aca9e9e2375d459b2b56aa890c76e81619ad6c8b84d552cd812454cab6'
diff --git a/specs_e2e/rails_3_2/config/initializers/session_store.rb b/specs_e2e/rails_3_2/config/initializers/session_store.rb
deleted file mode 100644
index 97114fd..0000000
--- a/specs_e2e/rails_3_2/config/initializers/session_store.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-Rails32::Application.config.session_store :cookie_store, key: '_rails_3_2_session'
-
-# Use the database for sessions instead of the cookie-based default,
-# which shouldn't be used to store highly confidential information
-# (create the session table with "rails generate session_migration")
-# Rails32::Application.config.session_store :active_record_store
diff --git a/specs_e2e/rails_3_2/config/locales/en.yml b/specs_e2e/rails_3_2/config/locales/en.yml
deleted file mode 100644
index 179c14c..0000000
--- a/specs_e2e/rails_3_2/config/locales/en.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-# Sample localization file for English. Add more files in this directory for other locales.
-# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
-
-en:
- hello: "Hello world"
diff --git a/specs_e2e/rails_3_2/config/routes.rb b/specs_e2e/rails_3_2/config/routes.rb
deleted file mode 100644
index 6a708b5..0000000
--- a/specs_e2e/rails_3_2/config/routes.rb
+++ /dev/null
@@ -1,60 +0,0 @@
-Rails32::Application.routes.draw do
- root :to => 'welcome#index'
-
- # The priority is based upon order of creation:
- # first created -> highest priority.
-
- # Sample of regular route:
- # match 'products/:id' => 'catalog#view'
- # Keep in mind you can assign values other than :controller and :action
-
- # Sample of named route:
- # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
- # This route can be invoked with purchase_url(:id => product.id)
-
- # Sample resource route (maps HTTP verbs to controller actions automatically):
- # resources :products
-
- # Sample resource route with options:
- # resources :products do
- # member do
- # get 'short'
- # post 'toggle'
- # end
- #
- # collection do
- # get 'sold'
- # end
- # end
-
- # Sample resource route with sub-resources:
- # resources :products do
- # resources :comments, :sales
- # resource :seller
- # end
-
- # Sample resource route with more complex sub-resources
- # resources :products do
- # resources :comments
- # resources :sales do
- # get 'recent', :on => :collection
- # end
- # end
-
- # Sample resource route within a namespace:
- # namespace :admin do
- # # Directs /admin/products/* to Admin::ProductsController
- # # (app/controllers/admin/products_controller.rb)
- # resources :products
- # end
-
- # You can have the root of your site routed with "root"
- # just remember to delete public/index.html.
- # root :to => 'welcome#index'
-
- # See how all your routes lay out with "rake routes"
-
- # This is a legacy wild controller route that's not recommended for RESTful applications.
- # Note: This route will make all actions in every controller accessible via GET requests.
- # match ':controller(/:action(/:id))(.:format)'
-end
diff --git a/specs_e2e/rails_3_2/public/404.html b/specs_e2e/rails_3_2/public/404.html
deleted file mode 100644
index 9a48320..0000000
--- a/specs_e2e/rails_3_2/public/404.html
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
- The page you were looking for doesn't exist (404)
-
-
-
-
-
-
-
The page you were looking for doesn't exist.
-
You may have mistyped the address or the page may have moved.
-
-
-
diff --git a/specs_e2e/rails_3_2/public/422.html b/specs_e2e/rails_3_2/public/422.html
deleted file mode 100644
index 83660ab..0000000
--- a/specs_e2e/rails_3_2/public/422.html
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
- The change you wanted was rejected (422)
-
-
-
-
-
-
-
The change you wanted was rejected.
-
Maybe you tried to change something you didn't have access to.
-
-
-
diff --git a/specs_e2e/rails_3_2/public/500.html b/specs_e2e/rails_3_2/public/500.html
deleted file mode 100644
index f3648a0..0000000
--- a/specs_e2e/rails_3_2/public/500.html
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
- We're sorry, but something went wrong (500)
-
-
-
-
-
-
-
We're sorry, but something went wrong.
-
-
-
diff --git a/specs_e2e/rails_3_2/public/robots.txt b/specs_e2e/rails_3_2/public/robots.txt
deleted file mode 100644
index 085187f..0000000
--- a/specs_e2e/rails_3_2/public/robots.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-# See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
-#
-# To ban all spiders from the entire site uncomment the next two lines:
-# User-Agent: *
-# Disallow: /
diff --git a/specs_e2e/rails_3_2/test.sh b/specs_e2e/rails_3_2/test.sh
deleted file mode 100755
index 918a736..0000000
--- a/specs_e2e/rails_3_2/test.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env bash
-set -eo pipefail
-
-echo '--- testing rails 3.2'
-
-echo '-- setting environment'
-export DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-export RAILS_ENV=test
-export BUNDLE_GEMFILE="$DIR/Gemfile"
-cd $DIR
-
-echo '-- bundle install'
-gem install bundler -v '1.0.22'
-bundle _1.0.22_ --version
-bundle _1.0.22_ install --quiet --gemfile="$DIR/Gemfile" --path vendor/bundle
-
-echo '-- cypress install'
-bundle exec ./bin/rails g cypress_on_rails:install --install_with=npm --install_folder="." --force
-rm -vf cypress/e2e/rails_examples/advance_factory_bot.cy.js
-rm -vf cypress/e2e/rails_examples/using_vcr.cy.js
-
-echo '-- start rails server'
-# make sure the server is not running
-(kill -9 `cat ../server.pid` || true )
-
-bundle exec ./bin/rails server -p 5017 -e test -P ../server.pid &
-sleep 2 # give rails a chance to start up correctly
-
-echo '-- cypress run'
-cp -fv ../cypress.config.js .
-# if [ -z $CYPRESS_RECORD_KEY ]
-# then
-# node_modules/.bin/cypress run
-# else
- npx cypress run --record
-# fi
-
-echo '-- playwright install'
-bundle exec ./bin/rails g cypress_on_rails:install --framework playwright --install_with=npm --install_folder="." --force
-rm -vf playwright/e2e/rails_examples/advance_factory_bot.cy.js
-rm -vf playwright/e2e/rails_examples/using_vcr.cy.js
-
-echo '-- playwright run'
-cp -fv ../playwright.config.js .
-npx playwright install-deps
-npx playwright install
-npx playwright test playwright/e2e/
-
-echo '-- stop rails server'
-kill -9 `cat ../server.pid` || true
diff --git a/specs_e2e/rails_6_1/.gitattributes b/specs_e2e/rails_6_1/.gitattributes
new file mode 100644
index 0000000..5168571
--- /dev/null
+++ b/specs_e2e/rails_6_1/.gitattributes
@@ -0,0 +1,10 @@
+# See https://git-scm.com/docs/gitattributes for more about git attribute files.
+
+# Mark the database schema as having been generated.
+db/schema.rb linguist-generated
+
+# Mark the yarn lockfile as having been generated.
+yarn.lock linguist-generated
+
+# Mark any vendored files as having been vendored.
+vendor/* linguist-vendored
diff --git a/specs_e2e/rails_6_1/.gitignore b/specs_e2e/rails_6_1/.gitignore
new file mode 100644
index 0000000..d62f776
--- /dev/null
+++ b/specs_e2e/rails_6_1/.gitignore
@@ -0,0 +1,16 @@
+.bundle
+test/node_modules
+test/cypress.config.js
+test/playwright.config.js
+test/package.json
+test/yarn.lock
+test/cypress/
+test/playwright/
+test/playwright-report/
+config/initializers/cypress_on_rails.rb
+vendor/bundle
+db/*.sqlite3
+db/schema.rb
+tmp/*
+log/*
+specs_e2e/server.pid
diff --git a/specs_e2e/rails_6_1/Gemfile b/specs_e2e/rails_6_1/Gemfile
new file mode 100644
index 0000000..f7ab681
--- /dev/null
+++ b/specs_e2e/rails_6_1/Gemfile
@@ -0,0 +1,20 @@
+source 'https://rubygems.org'
+git_source(:github) { |repo| "https://github.com/#{repo}.git" }
+
+# Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main'
+gem 'rails', '~> 6.1.7', '>= 6.1.7.10'
+# Use sqlite3 as the database for Active Record
+gem 'sqlite3', '~> 1.4'
+# Use Puma as the app server
+gem 'puma', '~> 5.0'
+
+# Reduces boot times through caching; required in config/boot.rb
+gem 'bootsnap', '>= 1.4.4', require: false
+gem 'concurrent-ruby', '< 1.3.5'
+gem 'date', '~> 3.3.3'
+gem 'timeout', '~> 0.3.2'
+
+group :development, :test do
+ gem 'cypress-on-rails', path: '../../'
+ gem 'database_cleaner'
+end
diff --git a/specs_e2e/rails_3_2/Rakefile b/specs_e2e/rails_6_1/Rakefile
similarity index 58%
rename from specs_e2e/rails_3_2/Rakefile
rename to specs_e2e/rails_6_1/Rakefile
index 3ecb0c4..9a5ea73 100644
--- a/specs_e2e/rails_3_2/Rakefile
+++ b/specs_e2e/rails_6_1/Rakefile
@@ -1,7 +1,6 @@
-#!/usr/bin/env rake
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
-require File.expand_path('../config/application', __FILE__)
+require_relative "config/application"
-Rails32::Application.load_tasks
+Rails.application.load_tasks
diff --git a/specs_e2e/rails_6_1/app/assets/stylesheets/application.css b/specs_e2e/rails_6_1/app/assets/stylesheets/application.css
new file mode 100644
index 0000000..d05ea0f
--- /dev/null
+++ b/specs_e2e/rails_6_1/app/assets/stylesheets/application.css
@@ -0,0 +1,15 @@
+/*
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
+ * listed below.
+ *
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's
+ * vendor/assets/stylesheets directory can be referenced here using a relative path.
+ *
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
+ * files in this directory. Styles in this file should be added after the last require_* statement.
+ * It is generally better to create a new file per style scope.
+ *
+ *= require_tree .
+ *= require_self
+ */
diff --git a/specs_e2e/rails_3_2/app/controllers/application_controller.rb b/specs_e2e/rails_6_1/app/controllers/application_controller.rb
similarity index 71%
rename from specs_e2e/rails_3_2/app/controllers/application_controller.rb
rename to specs_e2e/rails_6_1/app/controllers/application_controller.rb
index e8065d9..09705d1 100644
--- a/specs_e2e/rails_3_2/app/controllers/application_controller.rb
+++ b/specs_e2e/rails_6_1/app/controllers/application_controller.rb
@@ -1,3 +1,2 @@
class ApplicationController < ActionController::Base
- protect_from_forgery
end
diff --git a/specs_e2e/rails_6_1/app/controllers/posts_controller.rb b/specs_e2e/rails_6_1/app/controllers/posts_controller.rb
new file mode 100644
index 0000000..fed5ab9
--- /dev/null
+++ b/specs_e2e/rails_6_1/app/controllers/posts_controller.rb
@@ -0,0 +1,58 @@
+class PostsController < ApplicationController
+ before_action :set_post, only: [:show, :edit, :update, :destroy]
+
+ # GET /posts
+ def index
+ @posts = Post.all
+ end
+
+ # GET /posts/1
+ def show
+ end
+
+ # GET /posts/new
+ def new
+ @post = Post.new
+ end
+
+ # GET /posts/1/edit
+ def edit
+ end
+
+ # POST /posts
+ def create
+ @post = Post.new(post_params)
+
+ if @post.save
+ redirect_to @post, notice: 'Post was successfully created.'
+ else
+ render :new
+ end
+ end
+
+ # PATCH/PUT /posts/1
+ def update
+ if @post.update(post_params)
+ redirect_to @post, notice: 'Post was successfully updated.'
+ else
+ render :edit
+ end
+ end
+
+ # DELETE /posts/1
+ def destroy
+ @post.destroy
+ redirect_to posts_url, notice: 'Post was successfully destroyed.'
+ end
+
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_post
+ @post = Post.find(params[:id])
+ end
+
+ # Only allow a trusted parameter "white list" through.
+ def post_params
+ params.require(:post).permit(:title, :body, :published)
+ end
+end
diff --git a/specs_e2e/rails_6_1/app/helpers/posts_helper.rb b/specs_e2e/rails_6_1/app/helpers/posts_helper.rb
new file mode 100644
index 0000000..a7b8cec
--- /dev/null
+++ b/specs_e2e/rails_6_1/app/helpers/posts_helper.rb
@@ -0,0 +1,2 @@
+module PostsHelper
+end
diff --git a/specs_e2e/rails_6_1/app/jobs/application_job.rb b/specs_e2e/rails_6_1/app/jobs/application_job.rb
new file mode 100644
index 0000000..d394c3d
--- /dev/null
+++ b/specs_e2e/rails_6_1/app/jobs/application_job.rb
@@ -0,0 +1,7 @@
+class ApplicationJob < ActiveJob::Base
+ # Automatically retry jobs that encountered a deadlock
+ # retry_on ActiveRecord::Deadlocked
+
+ # Most jobs are safe to ignore if the underlying records are no longer available
+ # discard_on ActiveJob::DeserializationError
+end
diff --git a/specs_e2e/rails_6_1/app/models/application_record.rb b/specs_e2e/rails_6_1/app/models/application_record.rb
new file mode 100644
index 0000000..10a4cba
--- /dev/null
+++ b/specs_e2e/rails_6_1/app/models/application_record.rb
@@ -0,0 +1,3 @@
+class ApplicationRecord < ActiveRecord::Base
+ self.abstract_class = true
+end
diff --git a/specs_e2e/rails_6_1/app/models/post.rb b/specs_e2e/rails_6_1/app/models/post.rb
new file mode 100644
index 0000000..b2a8b46
--- /dev/null
+++ b/specs_e2e/rails_6_1/app/models/post.rb
@@ -0,0 +1,2 @@
+class Post < ApplicationRecord
+end
diff --git a/specs_e2e/rails_6_1/app/views/layouts/application.html.erb b/specs_e2e/rails_6_1/app/views/layouts/application.html.erb
new file mode 100644
index 0000000..1ca5721
--- /dev/null
+++ b/specs_e2e/rails_6_1/app/views/layouts/application.html.erb
@@ -0,0 +1,12 @@
+
+
+
+ App
+ <%= csrf_meta_tags %>
+ <%= csp_meta_tag %>
+
+
+
+ <%= yield %>
+
+
diff --git a/specs_e2e/rails_6_1/app/views/posts/_form.html.erb b/specs_e2e/rails_6_1/app/views/posts/_form.html.erb
new file mode 100644
index 0000000..6459998
--- /dev/null
+++ b/specs_e2e/rails_6_1/app/views/posts/_form.html.erb
@@ -0,0 +1,32 @@
+<%= form_with(model: post, local: true) do |form| %>
+ <% if post.errors.any? %>
+
+
<%= pluralize(post.errors.count, "error") %> prohibited this post from being saved:
+
+
+ <% post.errors.full_messages.each do |message| %>
+ - <%= message %>
+ <% end %>
+
+
+ <% end %>
+
+
+ <%= form.label :title %>
+ <%= form.text_field :title %>
+
+
+
+ <%= form.label :body %>
+ <%= form.text_area :body %>
+
+
+
+ <%= form.label :published %>
+ <%= form.check_box :published %>
+
+
+
+ <%= form.submit %>
+
+<% end %>
diff --git a/specs_e2e/rails_6_1/app/views/posts/edit.html.erb b/specs_e2e/rails_6_1/app/views/posts/edit.html.erb
new file mode 100644
index 0000000..ded33f7
--- /dev/null
+++ b/specs_e2e/rails_6_1/app/views/posts/edit.html.erb
@@ -0,0 +1,6 @@
+Editing Post
+
+<%= render 'form', post: @post %>
+
+<%= link_to 'Show', @post %> |
+<%= link_to 'Back', posts_path %>
diff --git a/specs_e2e/rails_6_1/app/views/posts/index.html.erb b/specs_e2e/rails_6_1/app/views/posts/index.html.erb
new file mode 100644
index 0000000..50cbc31
--- /dev/null
+++ b/specs_e2e/rails_6_1/app/views/posts/index.html.erb
@@ -0,0 +1,31 @@
+<%= notice %>
+
+Posts
+
+
+
+
+ Title |
+ Body |
+ Published |
+ |
+
+
+
+
+ <% @posts.each do |post| %>
+
+ <%= post.title %> |
+ <%= post.body %> |
+ <%= post.published %> |
+ <%= link_to 'Show', post %> |
+ <%= link_to 'Edit', edit_post_path(post) %> |
+ <%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %> |
+
+ <% end %>
+
+
+
+
+
+<%= link_to 'New Post', new_post_path %>
diff --git a/specs_e2e/rails_6_1/app/views/posts/new.html.erb b/specs_e2e/rails_6_1/app/views/posts/new.html.erb
new file mode 100644
index 0000000..fb1e2a1
--- /dev/null
+++ b/specs_e2e/rails_6_1/app/views/posts/new.html.erb
@@ -0,0 +1,5 @@
+New Post
+
+<%= render 'form', post: @post %>
+
+<%= link_to 'Back', posts_path %>
diff --git a/specs_e2e/rails_6_1/app/views/posts/show.html.erb b/specs_e2e/rails_6_1/app/views/posts/show.html.erb
new file mode 100644
index 0000000..85b8fe8
--- /dev/null
+++ b/specs_e2e/rails_6_1/app/views/posts/show.html.erb
@@ -0,0 +1,19 @@
+<%= notice %>
+
+
+ Title:
+ <%= @post.title %>
+
+
+
+ Body:
+ <%= @post.body %>
+
+
+
+ Published:
+ <%= @post.published %>
+
+
+<%= link_to 'Edit', edit_post_path(@post) %> |
+<%= link_to 'Back', posts_path %>
diff --git a/specs_e2e/rails_6_1/bin/bundle b/specs_e2e/rails_6_1/bin/bundle
new file mode 100755
index 0000000..981e650
--- /dev/null
+++ b/specs_e2e/rails_6_1/bin/bundle
@@ -0,0 +1,114 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+#
+# This file was generated by Bundler.
+#
+# The application 'bundle' is installed as part of a gem, and
+# this file is here to facilitate running it.
+#
+
+require "rubygems"
+
+m = Module.new do
+ module_function
+
+ def invoked_as_script?
+ File.expand_path($0) == File.expand_path(__FILE__)
+ end
+
+ def env_var_version
+ ENV["BUNDLER_VERSION"]
+ end
+
+ def cli_arg_version
+ return unless invoked_as_script? # don't want to hijack other binstubs
+ return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
+ bundler_version = nil
+ update_index = nil
+ ARGV.each_with_index do |a, i|
+ if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
+ bundler_version = a
+ end
+ next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
+ bundler_version = $1
+ update_index = i
+ end
+ bundler_version
+ end
+
+ def gemfile
+ gemfile = ENV["BUNDLE_GEMFILE"]
+ return gemfile if gemfile && !gemfile.empty?
+
+ File.expand_path("../Gemfile", __dir__)
+ end
+
+ def lockfile
+ lockfile =
+ case File.basename(gemfile)
+ when "gems.rb" then gemfile.sub(/\.rb$/, gemfile)
+ else "#{gemfile}.lock"
+ end
+ File.expand_path(lockfile)
+ end
+
+ def lockfile_version
+ return unless File.file?(lockfile)
+ lockfile_contents = File.read(lockfile)
+ return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
+ Regexp.last_match(1)
+ end
+
+ def bundler_requirement
+ @bundler_requirement ||=
+ env_var_version || cli_arg_version ||
+ bundler_requirement_for(lockfile_version)
+ end
+
+ def bundler_requirement_for(version)
+ return "#{Gem::Requirement.default}.a" unless version
+
+ bundler_gem_version = Gem::Version.new(version)
+
+ requirement = bundler_gem_version.approximate_recommendation
+
+ return requirement unless Gem.rubygems_version < Gem::Version.new("2.7.0")
+
+ requirement += ".a" if bundler_gem_version.prerelease?
+
+ requirement
+ end
+
+ def load_bundler!
+ ENV["BUNDLE_GEMFILE"] ||= gemfile
+
+ activate_bundler
+ end
+
+ def activate_bundler
+ gem_error = activation_error_handling do
+ gem "bundler", bundler_requirement
+ end
+ return if gem_error.nil?
+ require_error = activation_error_handling do
+ require "bundler/version"
+ end
+ return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION))
+ warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`"
+ exit 42
+ end
+
+ def activation_error_handling
+ yield
+ nil
+ rescue StandardError, LoadError => e
+ e
+ end
+end
+
+m.load_bundler!
+
+if m.invoked_as_script?
+ load Gem.bin_path("bundler", "bundle")
+end
diff --git a/specs_e2e/rails_6_1/bin/rails b/specs_e2e/rails_6_1/bin/rails
new file mode 100755
index 0000000..21d3e02
--- /dev/null
+++ b/specs_e2e/rails_6_1/bin/rails
@@ -0,0 +1,5 @@
+#!/usr/bin/env ruby
+load File.expand_path("spring", __dir__)
+APP_PATH = File.expand_path('../config/application', __dir__)
+require_relative "../config/boot"
+require "rails/commands"
diff --git a/specs_e2e/rails_6_1/bin/rake b/specs_e2e/rails_6_1/bin/rake
new file mode 100755
index 0000000..7327f47
--- /dev/null
+++ b/specs_e2e/rails_6_1/bin/rake
@@ -0,0 +1,5 @@
+#!/usr/bin/env ruby
+load File.expand_path("spring", __dir__)
+require_relative "../config/boot"
+require "rake"
+Rake.application.run
diff --git a/specs_e2e/rails_6_1/bin/setup b/specs_e2e/rails_6_1/bin/setup
new file mode 100755
index 0000000..90700ac
--- /dev/null
+++ b/specs_e2e/rails_6_1/bin/setup
@@ -0,0 +1,36 @@
+#!/usr/bin/env ruby
+require "fileutils"
+
+# path to your application root.
+APP_ROOT = File.expand_path('..', __dir__)
+
+def system!(*args)
+ system(*args) || abort("\n== Command #{args} failed ==")
+end
+
+FileUtils.chdir APP_ROOT do
+ # This script is a way to set up or update your development environment automatically.
+ # This script is idempotent, so that you can run it at any time and get an expectable outcome.
+ # Add necessary setup steps to this file.
+
+ puts '== Installing dependencies =='
+ system! 'gem install bundler --conservative'
+ system('bundle check') || system!('bundle install')
+
+ # Install JavaScript dependencies
+ system! 'bin/yarn'
+
+ # puts "\n== Copying sample files =="
+ # unless File.exist?('config/database.yml')
+ # FileUtils.cp 'config/database.yml.sample', 'config/database.yml'
+ # end
+
+ puts "\n== Preparing database =="
+ system! 'bin/rails db:prepare'
+
+ puts "\n== Removing old logs and tempfiles =="
+ system! 'bin/rails log:clear tmp:clear'
+
+ puts "\n== Restarting application server =="
+ system! 'bin/rails restart'
+end
diff --git a/specs_e2e/rails_6_1/bin/spring b/specs_e2e/rails_6_1/bin/spring
new file mode 100755
index 0000000..b4147e8
--- /dev/null
+++ b/specs_e2e/rails_6_1/bin/spring
@@ -0,0 +1,14 @@
+#!/usr/bin/env ruby
+if !defined?(Spring) && [nil, "development", "test"].include?(ENV["RAILS_ENV"])
+ gem "bundler"
+ require "bundler"
+
+ # Load Spring without loading other gems in the Gemfile, for speed.
+ Bundler.locked_gems&.specs&.find { |spec| spec.name == "spring" }&.tap do |spring|
+ Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
+ gem "spring", spring.version
+ require "spring/binstub"
+ rescue Gem::LoadError
+ # Ignore when Spring is not installed.
+ end
+end
diff --git a/specs_e2e/rails_6_1/bin/yarn b/specs_e2e/rails_6_1/bin/yarn
new file mode 100755
index 0000000..9fab2c3
--- /dev/null
+++ b/specs_e2e/rails_6_1/bin/yarn
@@ -0,0 +1,17 @@
+#!/usr/bin/env ruby
+APP_ROOT = File.expand_path('..', __dir__)
+Dir.chdir(APP_ROOT) do
+ yarn = ENV["PATH"].split(File::PATH_SEPARATOR).
+ select { |dir| File.expand_path(dir) != __dir__ }.
+ product(["yarn", "yarn.cmd", "yarn.ps1"]).
+ map { |dir, file| File.expand_path(file, dir) }.
+ find { |file| File.executable?(file) }
+
+ if yarn
+ exec yarn, *ARGV
+ else
+ $stderr.puts "Yarn executable was not detected in the system."
+ $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install"
+ exit 1
+ end
+end
diff --git a/specs_e2e/rails_6_1/config.ru b/specs_e2e/rails_6_1/config.ru
new file mode 100644
index 0000000..4a3c09a
--- /dev/null
+++ b/specs_e2e/rails_6_1/config.ru
@@ -0,0 +1,6 @@
+# This file is used by Rack-based servers to start the application.
+
+require_relative "config/environment"
+
+run Rails.application
+Rails.application.load_server
diff --git a/specs_e2e/rails_6_1/config/application.rb b/specs_e2e/rails_6_1/config/application.rb
new file mode 100644
index 0000000..caccfe0
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/application.rb
@@ -0,0 +1,34 @@
+require_relative 'boot'
+
+require 'logger'
+require 'rails'
+# Pick the frameworks you want:
+require 'active_model/railtie'
+require 'active_job/railtie'
+require 'active_record/railtie'
+require 'active_storage/engine'
+require 'action_controller/railtie'
+require 'action_text/engine'
+require 'action_view/railtie'
+require 'action_cable/engine'
+# require "sprockets/railtie"
+# require "rails/test_unit/railtie"
+
+# Require the gems listed in Gemfile, including any gems
+# you've limited to :test, :development, or :production.
+Bundler.require(*Rails.groups)
+
+module App
+ class Application < Rails::Application
+ # Initialize configuration defaults for originally generated Rails version.
+ config.load_defaults 6.1
+
+ # Configuration for the application, engines, and railties goes here.
+ #
+ # These settings can be overridden in specific environments using the files
+ # in config/environments, which are processed later.
+ #
+ # config.time_zone = "Central Time (US & Canada)"
+ # config.eager_load_paths << Rails.root.join("extras")
+ end
+end
diff --git a/specs_e2e/rails_6_1/config/boot.rb b/specs_e2e/rails_6_1/config/boot.rb
new file mode 100644
index 0000000..3cda23b
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/boot.rb
@@ -0,0 +1,4 @@
+ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
+
+require "bundler/setup" # Set up gems listed in the Gemfile.
+require "bootsnap/setup" # Speed up boot time by caching expensive operations.
diff --git a/specs_e2e/rails_6_1/config/cable.yml b/specs_e2e/rails_6_1/config/cable.yml
new file mode 100644
index 0000000..f39dc04
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/cable.yml
@@ -0,0 +1,10 @@
+development:
+ adapter: async
+
+test:
+ adapter: test
+
+production:
+ adapter: redis
+ url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
+ channel_prefix: app_production
diff --git a/specs_e2e/rails_6_1/config/credentials.yml.enc b/specs_e2e/rails_6_1/config/credentials.yml.enc
new file mode 100644
index 0000000..82a72f2
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/credentials.yml.enc
@@ -0,0 +1 @@
+XtTHzvHZqvH5arbcy28CkITjkhSQBOBwMZFJrrgvc3INakLJ5SBAfFeH9SdC/dQzBQ2v78cvrY7/xCsb2ELVwqp7Vhx20tPtsY1EZMz1f74m8FwYGlmq5GZI+uRVBv0rg7wNuvJPTry0L8HwpeM2gOpLlt85xe8sCMqzgugVxsysghW4FtQ3lx2zz48fsfnmnUN1iEKUvMyvBp9zTquiU2PkzoCPmckgymr8DNngKi6ArUOfzuVEgY0hKcL+ojk2kLImz1lQgMyC+691vo4AcT+X0yqt2O0SE5oOE8mx2HDZTMQ9GRjUl5Vm1CXsAiexKzyGR9J/4W82adD9TphlWJyBIM/FAndnqZDOBDCqZ0nvSNozcSccl3/LwFnkFhbHZXzpwkk5HpKzo91GZx8iha9+qITA6Yuz6k1B--j3HcmMwqzAV9IIBY--j4Il3ndJojPt4B3UvF1QWQ==
\ No newline at end of file
diff --git a/specs_e2e/rails_6_1/config/database.yml b/specs_e2e/rails_6_1/config/database.yml
new file mode 100644
index 0000000..39e512b
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/database.yml
@@ -0,0 +1,22 @@
+# SQLite. Versions 3.8.0 and up are supported.
+# gem install sqlite3
+#
+# Ensure the SQLite 3 gem is defined in your Gemfile
+# gem 'sqlite3'
+#
+
+default: &default
+ adapter: sqlite3
+ pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
+ timeout: 5000
+
+development:
+ <<: *default
+ database: db/development.sqlite3
+
+# Warning: The database defined as "test" will be erased and
+# re-generated from your development database when you run "rake".
+# Do not set this db to the same as development or production.
+test:
+ <<: *default
+ database: db/test.sqlite3
diff --git a/specs_e2e/rails_6_1/config/environment.rb b/specs_e2e/rails_6_1/config/environment.rb
new file mode 100644
index 0000000..cac5315
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/environment.rb
@@ -0,0 +1,5 @@
+# Load the Rails application.
+require_relative "application"
+
+# Initialize the Rails application.
+Rails.application.initialize!
diff --git a/specs_e2e/rails_6_1/config/environments/development.rb b/specs_e2e/rails_6_1/config/environments/development.rb
new file mode 100644
index 0000000..c17e198
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/environments/development.rb
@@ -0,0 +1,57 @@
+require 'active_support/core_ext/integer/time'
+
+Rails.application.configure do
+ # Settings specified here will take precedence over those in config/application.rb.
+
+ # In the development environment your application's code is reloaded any time
+ # it changes. This slows down response time but is perfect for development
+ # since you don't have to restart the web server when you make code changes.
+ config.cache_classes = false
+
+ # Do not eager load code on boot.
+ config.eager_load = false
+
+ # Show full error reports.
+ config.consider_all_requests_local = true
+
+ # Enable/disable caching. By default caching is disabled.
+ # Run rails dev:cache to toggle caching.
+ if Rails.root.join('tmp', 'caching-dev.txt').exist?
+ config.action_controller.perform_caching = true
+ config.action_controller.enable_fragment_cache_logging = true
+
+ config.cache_store = :memory_store
+ config.public_file_server.headers = {
+ 'Cache-Control' => "public, max-age=#{2.days.to_i}"
+ }
+ else
+ config.action_controller.perform_caching = false
+
+ config.cache_store = :null_store
+ end
+
+ # Store uploaded files on the local file system (see config/storage.yml for options).
+ config.active_storage.service = :local
+
+ # Print deprecation notices to the Rails logger.
+ config.active_support.deprecation = :log
+
+ # Raise exceptions for disallowed deprecations.
+ config.active_support.disallowed_deprecation = :raise
+
+ # Tell Active Support which deprecation messages to disallow.
+ config.active_support.disallowed_deprecation_warnings = []
+
+ # Raise an error on page load if there are pending migrations.
+ config.active_record.migration_error = :page_load
+
+ # Highlight code that triggered database queries in logs.
+ config.active_record.verbose_query_logs = true
+
+ # Use an evented file watcher to asynchronously detect changes in source code,
+ # routes, locales, etc. This feature depends on the listen gem.
+ config.file_watcher = ActiveSupport::EventedFileUpdateChecker
+
+ # Uncomment if you wish to allow Action Cable access from any origin.
+ # config.action_cable.disable_request_forgery_protection = true
+end
diff --git a/specs_e2e/rails_6_1/config/environments/production.rb b/specs_e2e/rails_6_1/config/environments/production.rb
new file mode 100644
index 0000000..36dd980
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/environments/production.rb
@@ -0,0 +1,120 @@
+require "active_support/core_ext/integer/time"
+
+Rails.application.configure do
+ # Settings specified here will take precedence over those in config/application.rb.
+
+ # Code is not reloaded between requests.
+ config.cache_classes = true
+
+ # Eager load code on boot. This eager loads most of Rails and
+ # your application in memory, allowing both threaded web servers
+ # and those relying on copy on write to perform better.
+ # Rake tasks automatically ignore this option for performance.
+ config.eager_load = true
+
+ # Full error reports are disabled and caching is turned on.
+ config.consider_all_requests_local = false
+ config.action_controller.perform_caching = true
+
+ # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
+ # or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
+ # config.require_master_key = true
+
+ # Disable serving static files from the `/public` folder by default since
+ # Apache or NGINX already handles this.
+ config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
+
+ # Compress CSS using a preprocessor.
+ # config.assets.css_compressor = :sass
+
+ # Do not fallback to assets pipeline if a precompiled asset is missed.
+ config.assets.compile = false
+
+ # Enable serving of images, stylesheets, and JavaScripts from an asset server.
+ # config.asset_host = 'http://assets.example.com'
+
+ # Specifies the header that your server uses for sending files.
+ # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
+
+ # Store uploaded files on the local file system (see config/storage.yml for options).
+ config.active_storage.service = :local
+
+ # Mount Action Cable outside main process or domain.
+ # config.action_cable.mount_path = nil
+ # config.action_cable.url = 'wss://example.com/cable'
+ # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
+
+ # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
+ # config.force_ssl = true
+
+ # Include generic and useful information about system operation, but avoid logging too much
+ # information to avoid inadvertent exposure of personally identifiable information (PII).
+ config.log_level = :info
+
+ # Prepend all log lines with the following tags.
+ config.log_tags = [ :request_id ]
+
+ # Use a different cache store in production.
+ # config.cache_store = :mem_cache_store
+
+ # Use a real queuing backend for Active Job (and separate queues per environment).
+ # config.active_job.queue_adapter = :resque
+ # config.active_job.queue_name_prefix = "app_production"
+
+ config.action_mailer.perform_caching = false
+
+ # Ignore bad email addresses and do not raise email delivery errors.
+ # Set this to true and configure the email server for immediate delivery to raise delivery errors.
+ # config.action_mailer.raise_delivery_errors = false
+
+ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
+ # the I18n.default_locale when a translation cannot be found).
+ config.i18n.fallbacks = true
+
+ # Send deprecation notices to registered listeners.
+ config.active_support.deprecation = :notify
+
+ # Log disallowed deprecations.
+ config.active_support.disallowed_deprecation = :log
+
+ # Tell Active Support which deprecation messages to disallow.
+ config.active_support.disallowed_deprecation_warnings = []
+
+ # Use default logging formatter so that PID and timestamp are not suppressed.
+ config.log_formatter = ::Logger::Formatter.new
+
+ # Use a different logger for distributed setups.
+ # require "syslog/logger"
+ # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
+
+ if ENV["RAILS_LOG_TO_STDOUT"].present?
+ logger = ActiveSupport::Logger.new(STDOUT)
+ logger.formatter = config.log_formatter
+ config.logger = ActiveSupport::TaggedLogging.new(logger)
+ end
+
+ # Do not dump schema after migrations.
+ config.active_record.dump_schema_after_migration = false
+
+ # Inserts middleware to perform automatic connection switching.
+ # The `database_selector` hash is used to pass options to the DatabaseSelector
+ # middleware. The `delay` is used to determine how long to wait after a write
+ # to send a subsequent read to the primary.
+ #
+ # The `database_resolver` class is used by the middleware to determine which
+ # database is appropriate to use based on the time delay.
+ #
+ # The `database_resolver_context` class is used by the middleware to set
+ # timestamps for the last write to the primary. The resolver uses the context
+ # class timestamps to determine how long to wait before reading from the
+ # replica.
+ #
+ # By default Rails will store a last write timestamp in the session. The
+ # DatabaseSelector middleware is designed as such you can define your own
+ # strategy for connection switching and pass that into the middleware through
+ # these configuration options.
+ # config.active_record.database_selector = { delay: 2.seconds }
+ # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
+ # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
+end
diff --git a/specs_e2e/rails_6_1/config/environments/test.rb b/specs_e2e/rails_6_1/config/environments/test.rb
new file mode 100644
index 0000000..328a1eb
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/environments/test.rb
@@ -0,0 +1,53 @@
+require "active_support/core_ext/integer/time"
+
+# The test environment is used exclusively to run your application's
+# test suite. You never need to work with it otherwise. Remember that
+# your test database is "scratch space" for the test suite and is wiped
+# and recreated between test runs. Don't rely on the data there!
+
+Rails.application.configure do
+ # Settings specified here will take precedence over those in config/application.rb.
+
+ config.cache_classes = false
+ config.action_view.cache_template_loading = true
+
+ # Do not eager load code on boot. This avoids loading your whole application
+ # just for the purpose of running a single test. If you are using a tool that
+ # preloads Rails for running tests, you may have to set it to true.
+ config.eager_load = false
+
+ # Configure public file server for tests with Cache-Control for performance.
+ config.public_file_server.enabled = true
+ config.public_file_server.headers = {
+ 'Cache-Control' => "public, max-age=#{1.hour.to_i}"
+ }
+
+ # Show full error reports and disable caching.
+ config.consider_all_requests_local = true
+ config.action_controller.perform_caching = false
+ config.cache_store = :null_store
+
+ # Raise exceptions instead of rendering exception templates.
+ config.action_dispatch.show_exceptions = false
+
+ # Disable request forgery protection in test environment.
+ config.action_controller.allow_forgery_protection = false
+
+ # Store uploaded files on the local file system in a temporary directory.
+ config.active_storage.service = :test
+
+ # Print deprecation notices to the stderr.
+ config.active_support.deprecation = :stderr
+
+ # Raise exceptions for disallowed deprecations.
+ config.active_support.disallowed_deprecation = :raise
+
+ # Tell Active Support which deprecation messages to disallow.
+ config.active_support.disallowed_deprecation_warnings = []
+
+ # Raises error for missing translations.
+ # config.i18n.raise_on_missing_translations = true
+
+ # Annotate rendered view with file names.
+ # config.action_view.annotate_rendered_view_with_filenames = true
+end
diff --git a/specs_e2e/rails_6_1/config/initializers/application_controller_renderer.rb b/specs_e2e/rails_6_1/config/initializers/application_controller_renderer.rb
new file mode 100644
index 0000000..89d2efa
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/initializers/application_controller_renderer.rb
@@ -0,0 +1,8 @@
+# Be sure to restart your server when you modify this file.
+
+# ActiveSupport::Reloader.to_prepare do
+# ApplicationController.renderer.defaults.merge!(
+# http_host: 'example.org',
+# https: false
+# )
+# end
diff --git a/specs_e2e/rails_6_1/config/initializers/backtrace_silencers.rb b/specs_e2e/rails_6_1/config/initializers/backtrace_silencers.rb
new file mode 100644
index 0000000..33699c3
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/initializers/backtrace_silencers.rb
@@ -0,0 +1,8 @@
+# Be sure to restart your server when you modify this file.
+
+# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
+# Rails.backtrace_cleaner.add_silencer { |line| /my_noisy_library/.match?(line) }
+
+# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code
+# by setting BACKTRACE=1 before calling your invocation, like "BACKTRACE=1 ./bin/rails runner 'MyClass.perform'".
+Rails.backtrace_cleaner.remove_silencers! if ENV["BACKTRACE"]
diff --git a/specs_e2e/rails_6_1/config/initializers/content_security_policy.rb b/specs_e2e/rails_6_1/config/initializers/content_security_policy.rb
new file mode 100644
index 0000000..35d0f26
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/initializers/content_security_policy.rb
@@ -0,0 +1,30 @@
+# Be sure to restart your server when you modify this file.
+
+# Define an application-wide content security policy
+# For further information see the following documentation
+# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
+
+# Rails.application.config.content_security_policy do |policy|
+# policy.default_src :self, :https
+# policy.font_src :self, :https, :data
+# policy.img_src :self, :https, :data
+# policy.object_src :none
+# policy.script_src :self, :https
+# policy.style_src :self, :https
+# # If you are using webpack-dev-server then specify webpack-dev-server host
+# policy.connect_src :self, :https, "http://localhost:3035", "ws://localhost:3035" if Rails.env.development?
+
+# # Specify URI for violation reports
+# # policy.report_uri "/csp-violation-report-endpoint"
+# end
+
+# If you are using UJS then enable automatic nonce generation
+# Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) }
+
+# Set the nonce only to specific directives
+# Rails.application.config.content_security_policy_nonce_directives = %w(script-src)
+
+# Report CSP violations to a specified URI
+# For further information see the following documentation:
+# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
+# Rails.application.config.content_security_policy_report_only = true
diff --git a/specs_e2e/rails_6_1/config/initializers/cookies_serializer.rb b/specs_e2e/rails_6_1/config/initializers/cookies_serializer.rb
new file mode 100644
index 0000000..5a6a32d
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/initializers/cookies_serializer.rb
@@ -0,0 +1,5 @@
+# Be sure to restart your server when you modify this file.
+
+# Specify a serializer for the signed and encrypted cookie jars.
+# Valid options are :json, :marshal, and :hybrid.
+Rails.application.config.action_dispatch.cookies_serializer = :json
diff --git a/specs_e2e/rails_6_1/config/initializers/filter_parameter_logging.rb b/specs_e2e/rails_6_1/config/initializers/filter_parameter_logging.rb
new file mode 100644
index 0000000..4b34a03
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/initializers/filter_parameter_logging.rb
@@ -0,0 +1,6 @@
+# Be sure to restart your server when you modify this file.
+
+# Configure sensitive parameters which will be filtered from the log file.
+Rails.application.config.filter_parameters += [
+ :passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn
+]
diff --git a/specs_e2e/rails_3_2/config/initializers/inflections.rb b/specs_e2e/rails_6_1/config/initializers/inflections.rb
similarity index 50%
rename from specs_e2e/rails_3_2/config/initializers/inflections.rb
rename to specs_e2e/rails_6_1/config/initializers/inflections.rb
index 5d8d9be..ac033bf 100644
--- a/specs_e2e/rails_3_2/config/initializers/inflections.rb
+++ b/specs_e2e/rails_6_1/config/initializers/inflections.rb
@@ -1,15 +1,16 @@
# Be sure to restart your server when you modify this file.
-# Add new inflection rules using the following format
-# (all these examples are active by default):
-# ActiveSupport::Inflector.inflections do |inflect|
+# Add new inflection rules using the following format. Inflections
+# are locale specific, and you may define rules for as many different
+# locales as you wish. All of these examples are active by default:
+# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep )
# end
-#
+
# These inflection rules are supported but not enabled by default:
-# ActiveSupport::Inflector.inflections do |inflect|
+# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.acronym 'RESTful'
# end
diff --git a/specs_e2e/rails_3_2/config/initializers/mime_types.rb b/specs_e2e/rails_6_1/config/initializers/mime_types.rb
similarity index 76%
rename from specs_e2e/rails_3_2/config/initializers/mime_types.rb
rename to specs_e2e/rails_6_1/config/initializers/mime_types.rb
index 72aca7e..dc18996 100644
--- a/specs_e2e/rails_3_2/config/initializers/mime_types.rb
+++ b/specs_e2e/rails_6_1/config/initializers/mime_types.rb
@@ -2,4 +2,3 @@
# Add new mime types for use in respond_to blocks:
# Mime::Type.register "text/richtext", :rtf
-# Mime::Type.register_alias "text/html", :iphone
diff --git a/specs_e2e/rails_6_1/config/initializers/permissions_policy.rb b/specs_e2e/rails_6_1/config/initializers/permissions_policy.rb
new file mode 100644
index 0000000..00f64d7
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/initializers/permissions_policy.rb
@@ -0,0 +1,11 @@
+# Define an application-wide HTTP permissions policy. For further
+# information see https://developers.google.com/web/updates/2018/06/feature-policy
+#
+# Rails.application.config.permissions_policy do |f|
+# f.camera :none
+# f.gyroscope :none
+# f.microphone :none
+# f.usb :none
+# f.fullscreen :self
+# f.payment :self, "https://secure.example.com"
+# end
diff --git a/specs_e2e/rails_3_2/config/initializers/wrap_parameters.rb b/specs_e2e/rails_6_1/config/initializers/wrap_parameters.rb
similarity index 69%
rename from specs_e2e/rails_3_2/config/initializers/wrap_parameters.rb
rename to specs_e2e/rails_6_1/config/initializers/wrap_parameters.rb
index 369b465..bbfc396 100644
--- a/specs_e2e/rails_3_2/config/initializers/wrap_parameters.rb
+++ b/specs_e2e/rails_6_1/config/initializers/wrap_parameters.rb
@@ -1,5 +1,5 @@
# Be sure to restart your server when you modify this file.
-#
+
# This file contains settings for ActionController::ParamsWrapper which
# is enabled by default.
@@ -8,3 +8,7 @@
wrap_parameters format: [:json]
end
+# To enable root element in JSON for ActiveRecord objects.
+# ActiveSupport.on_load(:active_record) do
+# self.include_root_in_json = true
+# end
diff --git a/specs_e2e/rails_6_1/config/locales/en.yml b/specs_e2e/rails_6_1/config/locales/en.yml
new file mode 100644
index 0000000..cf9b342
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/locales/en.yml
@@ -0,0 +1,33 @@
+# Files in the config/locales directory are used for internationalization
+# and are automatically loaded by Rails. If you want to use locales other
+# than English, add the necessary files in this directory.
+#
+# To use the locales, use `I18n.t`:
+#
+# I18n.t 'hello'
+#
+# In views, this is aliased to just `t`:
+#
+# <%= t('hello') %>
+#
+# To use a different locale, set it with `I18n.locale`:
+#
+# I18n.locale = :es
+#
+# This would use the information in config/locales/es.yml.
+#
+# The following keys must be escaped otherwise they will not be retrieved by
+# the default I18n backend:
+#
+# true, false, on, off, yes, no
+#
+# Instead, surround them with single quotes.
+#
+# en:
+# 'true': 'foo'
+#
+# To learn more, please read the Rails Internationalization guide
+# available at https://guides.rubyonrails.org/i18n.html.
+
+en:
+ hello: "Hello world"
diff --git a/specs_e2e/rails_6_1/config/master.key b/specs_e2e/rails_6_1/config/master.key
new file mode 100644
index 0000000..3c318db
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/master.key
@@ -0,0 +1 @@
+d4410d4dc7e27ed1b7657c233947edd6
\ No newline at end of file
diff --git a/specs_e2e/rails_6_1/config/puma.rb b/specs_e2e/rails_6_1/config/puma.rb
new file mode 100644
index 0000000..d9b3e83
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/puma.rb
@@ -0,0 +1,43 @@
+# Puma can serve each request in a thread from an internal thread pool.
+# The `threads` method setting takes two numbers: a minimum and maximum.
+# Any libraries that use thread pools should be configured to match
+# the maximum value specified for Puma. Default is set to 5 threads for minimum
+# and maximum; this matches the default thread size of Active Record.
+#
+max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
+min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
+threads min_threads_count, max_threads_count
+
+# Specifies the `worker_timeout` threshold that Puma will use to wait before
+# terminating a worker in development environments.
+#
+worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development"
+
+# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
+#
+port ENV.fetch("PORT") { 3000 }
+
+# Specifies the `environment` that Puma will run in.
+#
+environment ENV.fetch("RAILS_ENV") { "development" }
+
+# Specifies the `pidfile` that Puma will use.
+pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
+
+# Specifies the number of `workers` to boot in clustered mode.
+# Workers are forked web server processes. If using threads and workers together
+# the concurrency of the application would be max `threads` * `workers`.
+# Workers do not work on JRuby or Windows (both of which do not support
+# processes).
+#
+# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
+
+# Use the `preload_app!` method when specifying a `workers` number.
+# This directive tells Puma to first boot the application and load code
+# before forking the application. This takes advantage of Copy On Write
+# process behavior so workers use less memory.
+#
+# preload_app!
+
+# Allow puma to be restarted by `rails restart` command.
+plugin :tmp_restart
diff --git a/specs_e2e/rails_6_1/config/routes.rb b/specs_e2e/rails_6_1/config/routes.rb
new file mode 100644
index 0000000..a5cbafd
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/routes.rb
@@ -0,0 +1,5 @@
+Rails.application.routes.draw do
+ resources :posts
+ root 'posts#index'
+ # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
+end
diff --git a/specs_e2e/rails_6_1/config/storage.yml b/specs_e2e/rails_6_1/config/storage.yml
new file mode 100644
index 0000000..d32f76e
--- /dev/null
+++ b/specs_e2e/rails_6_1/config/storage.yml
@@ -0,0 +1,34 @@
+test:
+ service: Disk
+ root: <%= Rails.root.join("tmp/storage") %>
+
+local:
+ service: Disk
+ root: <%= Rails.root.join("storage") %>
+
+# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
+# amazon:
+# service: S3
+# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
+# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
+# region: us-east-1
+# bucket: your_own_bucket
+
+# Remember not to checkin your GCS keyfile to a repository
+# google:
+# service: GCS
+# project: your_project
+# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
+# bucket: your_own_bucket
+
+# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
+# microsoft:
+# service: AzureStorage
+# storage_account_name: your_account_name
+# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
+# container: your_container_name
+
+# mirror:
+# service: Mirror
+# primary: local
+# mirrors: [ amazon, google, microsoft ]
diff --git a/specs_e2e/rails_6_1/db/migrate/20180621085832_create_posts.rb b/specs_e2e/rails_6_1/db/migrate/20180621085832_create_posts.rb
new file mode 100644
index 0000000..0f48f99
--- /dev/null
+++ b/specs_e2e/rails_6_1/db/migrate/20180621085832_create_posts.rb
@@ -0,0 +1,11 @@
+class CreatePosts < ActiveRecord::Migration[6.1]
+ def change
+ create_table :posts do |t|
+ t.string :title
+ t.text :body
+ t.boolean :published
+
+ t.timestamps
+ end
+ end
+end
diff --git a/specs_e2e/rails_6_1/package.json b/specs_e2e/rails_6_1/package.json
new file mode 100644
index 0000000..6231077
--- /dev/null
+++ b/specs_e2e/rails_6_1/package.json
@@ -0,0 +1,8 @@
+{
+ "devDependencies": {
+ "@playwright/test": "^1.49.1",
+ "cypress": "^13.17.0",
+ "cypress-on-rails": "^0.1.0",
+ "playwright": "^1.49.1"
+ }
+}
diff --git a/specs_e2e/rails_6_1/playwright-report/index.html b/specs_e2e/rails_6_1/playwright-report/index.html
new file mode 100644
index 0000000..2844a57
--- /dev/null
+++ b/specs_e2e/rails_6_1/playwright-report/index.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+ Playwright Test Report
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/specs_e2e/rails_6_1/public/404.html b/specs_e2e/rails_6_1/public/404.html
new file mode 100644
index 0000000..2be3af2
--- /dev/null
+++ b/specs_e2e/rails_6_1/public/404.html
@@ -0,0 +1,67 @@
+
+
+
+ The page you were looking for doesn't exist (404)
+
+
+
+
+
+
+
+
+
The page you were looking for doesn't exist.
+
You may have mistyped the address or the page may have moved.
+
+
If you are the application owner check the logs for more information.
+
+
+
diff --git a/specs_e2e/rails_6_1/public/422.html b/specs_e2e/rails_6_1/public/422.html
new file mode 100644
index 0000000..c08eac0
--- /dev/null
+++ b/specs_e2e/rails_6_1/public/422.html
@@ -0,0 +1,67 @@
+
+
+
+ The change you wanted was rejected (422)
+
+
+
+
+
+
+
+
+
The change you wanted was rejected.
+
Maybe you tried to change something you didn't have access to.
+
+
If you are the application owner check the logs for more information.
+
+
+
diff --git a/specs_e2e/rails_6_1/public/500.html b/specs_e2e/rails_6_1/public/500.html
new file mode 100644
index 0000000..78a030a
--- /dev/null
+++ b/specs_e2e/rails_6_1/public/500.html
@@ -0,0 +1,66 @@
+
+
+
+ We're sorry, but something went wrong (500)
+
+
+
+
+
+
+
+
+
We're sorry, but something went wrong.
+
+
If you are the application owner check the logs for more information.
+
+
+
diff --git a/specs_e2e/rails_3_2/log/.keep b/specs_e2e/rails_6_1/public/apple-touch-icon-precomposed.png
similarity index 100%
rename from specs_e2e/rails_3_2/log/.keep
rename to specs_e2e/rails_6_1/public/apple-touch-icon-precomposed.png
diff --git a/specs_e2e/rails_3_2/public/favicon.ico b/specs_e2e/rails_6_1/public/apple-touch-icon.png
similarity index 100%
rename from specs_e2e/rails_3_2/public/favicon.ico
rename to specs_e2e/rails_6_1/public/apple-touch-icon.png
diff --git a/specs_e2e/rails_3_2/tmp/.keep b/specs_e2e/rails_6_1/public/favicon.ico
similarity index 100%
rename from specs_e2e/rails_3_2/tmp/.keep
rename to specs_e2e/rails_6_1/public/favicon.ico
diff --git a/specs_e2e/rails_6_1/public/robots.txt b/specs_e2e/rails_6_1/public/robots.txt
new file mode 100644
index 0000000..c19f78a
--- /dev/null
+++ b/specs_e2e/rails_6_1/public/robots.txt
@@ -0,0 +1 @@
+# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
diff --git a/specs_e2e/rails_6_1/test-results/.last-run.json b/specs_e2e/rails_6_1/test-results/.last-run.json
new file mode 100644
index 0000000..cbcc1fb
--- /dev/null
+++ b/specs_e2e/rails_6_1/test-results/.last-run.json
@@ -0,0 +1,4 @@
+{
+ "status": "passed",
+ "failedTests": []
+}
\ No newline at end of file
diff --git a/specs_e2e/rails_6_1/test.sh b/specs_e2e/rails_6_1/test.sh
new file mode 100755
index 0000000..6cc7a94
--- /dev/null
+++ b/specs_e2e/rails_6_1/test.sh
@@ -0,0 +1,57 @@
+#!/usr/bin/env bash
+set -eo pipefail
+
+echo '--- testing rails 6.1.7'
+
+echo '-- setting environment'
+export DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+export RAILS_ENV=test
+export BUNDLE_GEMFILE="$DIR/Gemfile"
+cd $DIR
+
+echo '-- bundle install'
+bundle --version
+bundle config set --local path 'vendor/bundle'
+bundle install --quiet --gemfile="$DIR/Gemfile" --retry 2
+
+echo '-- migration'
+bundle exec ./bin/rails db:drop || true
+bundle exec ./bin/rails db:create db:migrate
+
+echo '-- cypress install'
+bundle exec ./bin/rails g cypress_on_rails:install --install_folder=test --framework cypress --install_with=npm --force
+rm -vf test/cypress/e2e/rails_examples/using_vcr.cy.js
+
+echo '-- start rails server'
+# make sure the server is not running
+(kill -9 `cat ../server.pid` || true )
+
+bundle exec ./bin/rails server -p 5017 -e test -P ../server.pid &
+sleep 2 # give rails a chance to start up correctly
+
+echo '-- cypress run'
+cp -fv ../cypress.config.js test/
+cd test
+npx cypress install
+# if [ -z $CYPRESS_RECORD_KEY ]
+# then
+# npx cypress run
+# else
+ npx cypress run # --record
+# fi
+
+echo '-- playwright install'
+cd ..
+bundle exec ./bin/rails g cypress_on_rails:install --install_folder=test --framework playwright --install_with=npm --force
+rm -vf test/playwright/e2e/rails_examples/using_vcr.cy.js
+
+echo '-- playwright run'
+cd test
+cp -fv ../../playwright.config.js .
+npx playwright install-deps
+npx playwright install
+npx playwright test test/playwright
+# npx playwright show-report
+
+echo '-- stop rails server'
+kill -9 `cat ../../server.pid` || true
diff --git a/specs_e2e/rails_6_1/test/controllers/posts_controller_test.rb b/specs_e2e/rails_6_1/test/controllers/posts_controller_test.rb
new file mode 100644
index 0000000..14af994
--- /dev/null
+++ b/specs_e2e/rails_6_1/test/controllers/posts_controller_test.rb
@@ -0,0 +1,48 @@
+require 'test_helper'
+
+class PostsControllerTest < ActionDispatch::IntegrationTest
+ setup do
+ @post = posts(:one)
+ end
+
+ test "should get index" do
+ get posts_url
+ assert_response :success
+ end
+
+ test "should get new" do
+ get new_post_url
+ assert_response :success
+ end
+
+ test "should create post" do
+ assert_difference('Post.count') do
+ post posts_url, params: { post: { body: @post.body, published: @post.published, title: @post.title } }
+ end
+
+ assert_redirected_to post_url(Post.last)
+ end
+
+ test "should show post" do
+ get post_url(@post)
+ assert_response :success
+ end
+
+ test "should get edit" do
+ get edit_post_url(@post)
+ assert_response :success
+ end
+
+ test "should update post" do
+ patch post_url(@post), params: { post: { body: @post.body, published: @post.published, title: @post.title } }
+ assert_redirected_to post_url(@post)
+ end
+
+ test "should destroy post" do
+ assert_difference('Post.count', -1) do
+ delete post_url(@post)
+ end
+
+ assert_redirected_to posts_url
+ end
+end
diff --git a/specs_e2e/rails_6_1/test/cypress_fixtures/posts.yml b/specs_e2e/rails_6_1/test/cypress_fixtures/posts.yml
new file mode 100644
index 0000000..7058020
--- /dev/null
+++ b/specs_e2e/rails_6_1/test/cypress_fixtures/posts.yml
@@ -0,0 +1,11 @@
+# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+one:
+ title: MyCypressFixtures
+ body: MyText
+ published: true
+
+two:
+ title: MyCypressFixtures2
+ body: MyText
+ published: true
diff --git a/specs_e2e/rails_6_1/test/fixtures/posts.yml b/specs_e2e/rails_6_1/test/fixtures/posts.yml
new file mode 100644
index 0000000..9fa2b74
--- /dev/null
+++ b/specs_e2e/rails_6_1/test/fixtures/posts.yml
@@ -0,0 +1,11 @@
+# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+one:
+ title: MyRailsFixtures
+ body: MyText
+ published: false
+
+two:
+ title: MyRailsFixtures2
+ body: MyText
+ published: false
diff --git a/specs_e2e/rails_6_1/test/models/post_test.rb b/specs_e2e/rails_6_1/test/models/post_test.rb
new file mode 100644
index 0000000..6d9d463
--- /dev/null
+++ b/specs_e2e/rails_6_1/test/models/post_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class PostTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/specs_e2e/rails_3_2/vendor/.gitkeep b/specs_e2e/rails_6_1/vendor/.keep
similarity index 100%
rename from specs_e2e/rails_3_2/vendor/.gitkeep
rename to specs_e2e/rails_6_1/vendor/.keep