Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ltfschoen/guard_demo
Guard RSpec and Guard LiveReload
https://github.com/ltfschoen/guard_demo
guard guard-livereload guard-rspec rspec
Last synced: 3 days ago
JSON representation
Guard RSpec and Guard LiveReload
- Host: GitHub
- URL: https://github.com/ltfschoen/guard_demo
- Owner: ltfschoen
- Created: 2017-10-10T11:44:02.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-10-10T11:49:34.000Z (over 7 years ago)
- Last Synced: 2024-12-07T04:05:25.242Z (2 months ago)
- Topics: guard, guard-livereload, guard-rspec, rspec
- Language: Ruby
- Size: 30.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Guard Demo
* Steps to Build the Guard Demo
* Create App
```
rails new guard_demo --database=postgresql --skip-test-unit;
cd guard_demo;
```
* Install RSpec for Rails
```
echo 'gem "rspec-rails", :group => [:development, :test]' >> Gemfile;
bundle install;
rails generate rspec:install;
```
* Install Dependencies
```
bundle install
```
* Run Server
```
rails s
```
* Add Static Pages
* Link: https://www.railstutorial.org/book/static_pages
* Generate Controller
```
rails g controller StaticPages home help
```
* Update Routes
```
root to: 'static_pages#home'
get 'static_pages/home', to: 'static_pages#home'
get 'static_pages/help', to: 'static_pages#help'
```
* Run PostgreSQL
* Create and migrate DB
```
rails db:create db:migrate
```
* Run Tests
```
bundle exec rspec
```
* Add Guard RSpec
* Reference: https://github.com/guard/guard-rspec
* Add Guard RSpec to Gemfile
```
group :development, :test do
gem 'guard-rspec'
end
```
* Install dependency
```
bundle install
```
* Generate RSpec files
```
bundle exec guard init rspec
```
* Run Guard
```
bundle exec guard
```
* Run Rails Server in a separate Tab
```
rails s
```
* Change a Unit Test to see the Guard Terminal window auto-run the Unit tests and fail
* Change in spec/controllers/static_pages_controller_spec.rb
* Before
```
expect(response).to have_http_status(:success)
```
* After
```
expect(response).to have_http_status(404)
```
* Result - Terminal displays test failure
```
expected the response to have status code 404 but it was 200
```
* Reference: https://github.com/rspec/rspec-rails/blob/master/lib/rspec/rails/matchers/have_http_status.rb* Add LiveReload - automatically reload after views modified
* Reference:
* http://livereload.com/
* https://github.com/guard/guard-livereload
* Add Ruby version to Gemfile
```
source 'https://rubygems.org'
ruby '2.4.2'
```
* Add Guard LiveReload to Gemfile
```
group :development, :test do
gem 'guard-livereload', '~> 2.5', require: false
end
```
* Install dependencies
```
bundle install
```
* Generate LiveReload config files
```
bundle exec guard init livereload
```
* Install LiveReload browser extension (see guard-livereload Gem Readme and Wiki on Github)
* Browser Extension - http://livereload.com/extensions/#installing-sections* Switch to Ruby version
```
rbenv global 2.4.2
rbenv shell 2.4.2
```* Overcome Errors - encountered errors and mitigation measures
* Problem 1 - Error when running `rails s`
```
Could not find eventmachine-1.2.5 in any of the sources
Run `bundle install` to install missing gems.
```* Solution 1 - Change Gemfile to the following
```
group :development, :test do
gem 'eventmachine', '1.2.5',
path: 'vendor/bundle/gems/eventmachine-1.2.5',
require: 'eventmachine'
# http://railscasts.com/episodes/264-guard
gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
gem 'guard-rspec', '~> 4.7.3'
gem 'guard-livereload', '~> 2.5.2'
end
```* Update Gemfile.lock
```
bundle update
```* Problen 2 - Error still when running `rails s`
```
~/guard_demo/vendor/bundle/gems/pg-0.21.0/lib/pg.rb:4:in `require': dlopen(~/guard_demo/vendor/bundle/gems/pg-0.21.0/lib/pg_ext.bundle, 9): Symbol not found: _rb_cFixnum (LoadError)
```* Solution - Switch from PostgreSQL 0.21.0 to 0.20.0 by changing Gemfile to the following:
```
gem 'pg', '0.20',
path: 'vendor/bundle/gems/pg-0.20.0',
require: 'pg'
```* Update Gemfile.lock
```
bundle update
```* Problem 3 - Error when trying to run Guard or Rails Server
```
$ bundle exec guard21:55:09 - ERROR - Invalid Guardfile, original error is:
> [#]
> [#] incompatible library version - ~/guard_demo/vendor/bundle/gems/http_parser.rb-0.6.0/lib/ruby_http_parser.bundle,
``````
$ rails s
Could not find http_parser.rb-0.5.3 in any of the sources
Run `bundle install` to install missing gems.
```* Solution - Change Gemfile to from version 0.6.0 of http_parser.rb Gem to 0.5.3
```
group :development, :test do
gem 'http_parser.rb', '0.5.3'
end
```* Update Gems
```
bundle update
```* Open two Terminal Tabs and run the following
* In Tab 1 - `rails s`
* In Tab 2 - `bundle exec guard`* Edit code in Rails views and see each changes automatically reflected in Browser and Unit Tests run upon each change (no need to refresh the browser manually, or to manually run RSpec after each code change)
* The above issues encountered during installation of Guard-LiveReload have been reported here - https://github.com/guard/guard-livereload/issues/177