From e1e49cbbb24243a204703b60ad61eebfbba1a426 Mon Sep 17 00:00:00 2001 From: Brigitte Warner Date: Thu, 24 Jul 2014 20:42:09 -0400 Subject: [PATCH 1/5] update less to sass --- .../bootstrap_and_overrides.css.scssc | Bin 0 -> 7499 bytes app/assets/javascripts/application.js | 4 +-- app/assets/stylesheets/application.css | 3 ++ .../bootstrap_and_overrides.css.scss | 31 ++++++++++++++++++ 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 .sass-cache/537fb40b38351f28b6bdf09386ea293e12c7399b/bootstrap_and_overrides.css.scssc create mode 100644 app/assets/stylesheets/bootstrap_and_overrides.css.scss diff --git a/.sass-cache/537fb40b38351f28b6bdf09386ea293e12c7399b/bootstrap_and_overrides.css.scssc b/.sass-cache/537fb40b38351f28b6bdf09386ea293e12c7399b/bootstrap_and_overrides.css.scssc new file mode 100644 index 0000000000000000000000000000000000000000..d8d6d9a26ebfe901005e6ac32004f6ab138a68d3 GIT binary patch literal 7499 zcmcIp3v(065ynnRmSkJT=4GBY$bfAQJ&et32e{=ZsB%?8sEE6(i|a}?l19>o)y`&j zWZ_WcCnP^7|0h2rmG0TuUCnxB1G%FLw6i=Lx^x-RbN+e6+)N*xvn4hdtuW?r#6VF6%t(J$$^|Y?gmt6xQVy3q#9#7jSM_ ze-=W%5k07m3hS!5<*f)E=?HHDB)N{qor1Mwi+(@k z5+0Xr?)4NMU0$FSr$ASnMcCPQT)tmDX#5cJAZ&C3XW&T5CoJ%I(D>eY&s#&@YcSt$ zfaP3wDcOB(Ssvs0@wUA3>$H6@7Nghxyd{4E?TWYYO< zAbd>c75WV-eAZ{Z9=N_Hg|C!av=5m(hWyo$Zgm64mvP1X!GSDbZjs(Ow&6!4v#gd3 zfE{drDtXxSKPaXU#v`9wE09~Bbovetz+&NJvWFkffVK@Gsq{FK1gB|Vg$dl}YRrL4-Or6DOA)k?TNrlKPTcw0uHz?L((U7ysIXNUc7+P<; z5tGnw?JYrXYj3Z{-gbFkqG!O5bQ8Tvw<4F_*Dj;m^e)nZZ;Bb;6u}!85(RN}Igtjw zq4#J_J0p)Wb%se-u&+mI7P=O6{%#=t%DhbTF$4Vl{q;2(r_-y0-$sDjeDu$=MlGWfTeL=0DN zV*f(@F9Ybj=SLF}^Z+t%MELcCbX?1NBZ3igoxk%QoT3X*Pq42ICjm+a^eNdR=ELuz z9r`WG3hdo^qde2h;)vi7*(l4`j8HH#e`r36KyIRdhA$cd_yHde~kHW~7O-@{J<^6;T(djz_Y8BGb9IIc@PAqjGh{tVe6SAc*= z0uLe}sFRi;eG$Ok37K#u7eNEM3E_@4T+|b|p!anip2esN8fDj|KKMhs8x@?LGiJGiWK5dr;nk}&5o33CpDb2SMyuAUm9o(^*!Z5n2icFK_TDMNmO zj&hbIw@7pDUMWH^zaZ!}?EHcHy6)}u+1N_16E7s3g$Cy2H23eQ%?BRv404|%_tcOp*-Oex7vQ!S8Bv5VC^eN1$mm<93Y7pDJ~baJTA->1~4X#0{B~#1pu>b(*MODQ+v(q&&aWH=BmS z&yFb^RSm|ofc@KTeVO||JyoT zjbtF)+8_{PzYe24XovA6j$Y_vIVUl0g05*|;HqYLB|b;v#3<>+02ql8Yt4|YWK^7+ zNoJ%Q%Sx?ugFWAxI}PVk-SAYpf_Vc(YWf8taB)0SD~a7-CM#{sQP%AoS)T>lTCdYA z+e+{PrQOSs2A~l0!r5MegypVqMWAfU;Na3m=gA)1d#t{trBKbJRuu%UB;s*((Fl4v zRm!7GOTnZ}O5syl3b!JGp&f-8JWgw1z&!t--{F5zkdLHX zif4{6;k5{kWNG>i=a3e`p(8DSDwoTR#);##@-1^jW<_^-HTBxs{JcR5j!-tYX~Zfs zy7?M@>0k!APFwIA@bA~1W`KKsqiF_k{=cUg%iXj(8&^0=xMqrEcsOm{`m nUgJ2NbrdTm3fL^7L7Rf;X~diQ@JZca04h$Oxfc?&jiBOxh-`@N literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 46f1298..b704c6d 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -12,8 +12,8 @@ // //= require jquery //= require jquery_ujs -//= require twitter/bootstrap/bootstrap-button -//= require twitter/bootstrap/bootstrap-modal +// require twitter/bootstrap/bootstrap-button +// require twitter/bootstrap/bootstrap-modal //= require utils //= require bootstrap-datepicker //= require bootstrap-timepicker diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 6b66844..221a607 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -10,6 +10,9 @@ * *= require_self *= require datepicker + *= require bootstrap + *= require bootstrap-responsive *= require bootstrap-timepicker *= require bootstrap_and_overrides + *= require bootstrap-fontawesome */ diff --git a/app/assets/stylesheets/bootstrap_and_overrides.css.scss b/app/assets/stylesheets/bootstrap_and_overrides.css.scss new file mode 100644 index 0000000..891367e --- /dev/null +++ b/app/assets/stylesheets/bootstrap_and_overrides.css.scss @@ -0,0 +1,31 @@ +body { + padding-top: 60px; + padding-left: 20px; +} + + +// Set the correct sprite paths +$iconSpritePath: asset-path('twitter/bootstrap/glyphicons-halflings.png'); +$iconWhiteSpritePath: asset-path('twitter/bootstrap/glyphicons-halflings-white.png'); + +// Set the Font Awesome (Font Awesome is default. You can disable by commenting below lines) +// Note: If you use asset_path() here, your compiled boostrap_and_overrides.css will not +// have the proper paths. So for now we use the absolute path. +$fontAwesomeEotPath: '/assets/fontawesome-webfont.eot'; +$fontAwesomeWoffPath: '/assets/fontawesome-webfont.woff'; +$fontAwesomeTtfPath: '/assets/fontawesome-webfont.ttf'; +$fontAwesomeSvgPath: '/assets/fontawesome-webfont.svg'; + +[data-toggle="buttons-radio"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} + +.inline-block { + display: inline-block; +} + +.control-group.error .btn-group > .btn { + color: #b94a48; + border-color: #b94a48; +} From c2e2ce5b1b3967e5c459984d9b6b12533f44a9f3 Mon Sep 17 00:00:00 2001 From: Brigitte Warner Date: Thu, 24 Jul 2014 20:42:37 -0400 Subject: [PATCH 2/5] update ruby and gem versions --- .ruby-version | 2 +- Gemfile | 45 ++-- Gemfile.lock | 237 +++++++++--------- .../bootstrap_and_overrides.css.less | 47 ---- config/application.rb | 5 +- spec/factories/bikes.rb | 31 ++- spec/factories/users.rb | 8 +- 7 files changed, 161 insertions(+), 214 deletions(-) delete mode 100644 app/assets/stylesheets/bootstrap_and_overrides.css.less diff --git a/.ruby-version b/.ruby-version index e5fea6c..3e3c2f1 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -ruby-1.9.3-p374 +2.1.1 diff --git a/Gemfile b/Gemfile index 9bb8108..4d7db12 100644 --- a/Gemfile +++ b/Gemfile @@ -1,51 +1,50 @@ source 'https://rubygems.org' -gem 'rails', '3.2.13' +gem 'rails', '3.2.19' gem 'netzke-cancan' -gem 'netzke-core', '~>0.8.0' -gem 'netzke-basepack', '~>0.8.0' +gem 'netzke-core' +gem 'netzke-basepack' gem 'acts_as_loggable', :git => 'https://github.com/spacemunkay/acts_as_loggable.git' -gem 'bootstrap-will_paginate', '~> 0.0.6' +gem 'bootstrap-will_paginate' gem 'cancan' gem 'decent_exposure', '~> 1.0.1' gem 'devise', '~> 2.0.4' -gem 'haml-rails', '~> 0.3.4' -gem 'jquery-rails', '~> 2.0' +gem 'haml-rails' +gem 'jquery-rails' gem 'pg', '~> 0.17.1' -gem 'will_paginate', '~> 3.0.3' -gem 'jbuilder', '~> 2.0.3' +gem 'will_paginate' +gem 'jbuilder' # Gems used only for assets and not required # in production environments by default. group :assets do - gem 'coffee-rails', '~> 3.2.1' - gem "twitter-bootstrap-rails", "~> 2.0.3" - - # See https://github.com/sstephenson/execjs#readme for more supported runtimes - # gem 'therubyracer' - - gem 'uglifier', '>= 1.0.3' + gem 'coffee-rails' + # Use SCSS for stylesheets + gem 'sass-rails' + # Use bootstrap-sass for stylesheets + gem 'bootstrap-sass' + gem 'uglifier' end group :development, :test do - gem 'rspec-rails', '~> 2.14.0' - gem 'factory_girl_rails', '~> 1.2' - gem 'pry', '~> 0.9.8' - gem 'faker', '~> 1.2.0' + gem 'rspec-rails' + gem 'factory_girl_rails' + gem 'pry' + gem 'faker' end group :test do - gem 'shoulda-matchers', '~> 1.0.0' +# gem 'shoulda-matchers', '~> 1.0.0' gem 'capybara', '~> 2.2.1' gem 'poltergeist', '~> 1.5.0' gem 'database_cleaner', '~> 1.2.0' gem 'launchy', '~> 2.4.2' - gem 'spork', '~> 0.9.2' + gem 'spork' #guard dependency for Mac OS 10 gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i - gem 'guard-spork', '~> 1.5.1' - gem 'guard-rspec', '~> 4.2.6' + gem 'guard-spork' + gem 'guard-rspec' end diff --git a/Gemfile.lock b/Gemfile.lock index e9971ae..a4a6a58 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -9,12 +9,12 @@ GIT GEM remote: https://rubygems.org/ specs: - actionmailer (3.2.13) - actionpack (= 3.2.13) - mail (~> 2.5.3) - actionpack (3.2.13) - activemodel (= 3.2.13) - activesupport (= 3.2.13) + actionmailer (3.2.19) + actionpack (= 3.2.19) + mail (~> 2.5.4) + actionpack (3.2.19) + activemodel (= 3.2.19) + activesupport (= 3.2.19) builder (~> 3.0.0) erubis (~> 2.7.0) journey (~> 1.0.4) @@ -22,23 +22,27 @@ GEM rack-cache (~> 1.2) rack-test (~> 0.6.1) sprockets (~> 2.2.1) - activemodel (3.2.13) - activesupport (= 3.2.13) + activemodel (3.2.19) + activesupport (= 3.2.19) builder (~> 3.0.0) - activerecord (3.2.13) - activemodel (= 3.2.13) - activesupport (= 3.2.13) + activerecord (3.2.19) + activemodel (= 3.2.19) + activesupport (= 3.2.19) arel (~> 3.0.2) tzinfo (~> 0.3.29) - activeresource (3.2.13) - activemodel (= 3.2.13) - activesupport (= 3.2.13) - activesupport (3.2.13) - i18n (= 0.6.1) + activeresource (3.2.19) + activemodel (= 3.2.19) + activesupport (= 3.2.19) + activesupport (3.2.19) + i18n (~> 0.6, >= 0.6.4) multi_json (~> 1.0) - addressable (2.3.5) + addressable (2.3.6) arel (3.0.3) - bcrypt-ruby (3.1.2) + bcrypt (3.1.7) + bcrypt-ruby (3.1.5) + bcrypt (>= 3.1.3) + bootstrap-sass (3.2.0.0) + sass (~> 3.2) bootstrap-will_paginate (0.0.10) will_paginate builder (3.0.4) @@ -51,18 +55,17 @@ GEM xpath (~> 2.0) celluloid (0.15.2) timers (~> 1.1.0) - childprocess (0.4.0) + childprocess (0.5.3) ffi (~> 1.0, >= 1.0.11) cliver (0.3.2) coderay (1.1.0) coffee-rails (3.2.2) coffee-script (>= 2.2.0) railties (~> 3.2.0) - coffee-script (2.2.0) + coffee-script (2.3.0) coffee-script-source execjs - coffee-script-source (1.7.0) - commonjs (0.2.7) + coffee-script-source (1.7.1) database_cleaner (1.2.0) decent_exposure (1.0.2) devise (2.0.6) @@ -72,160 +75,156 @@ GEM warden (~> 1.1.1) diff-lcs (1.2.5) erubis (2.7.0) - execjs (2.0.2) - factory_girl (2.6.4) - activesupport (>= 2.3.9) - factory_girl_rails (1.7.0) - factory_girl (~> 2.6.0) + execjs (2.2.1) + factory_girl (4.4.0) + activesupport (>= 3.0.0) + factory_girl_rails (4.4.1) + factory_girl (~> 4.4.0) railties (>= 3.0.0) - faker (1.2.0) + faker (1.4.2) i18n (~> 0.5) ffi (1.9.3) - formatador (0.2.4) - guard (2.4.0) + formatador (0.2.5) + guard (2.6.1) formatador (>= 0.2.4) - listen (~> 2.1) + listen (~> 2.7) lumberjack (~> 1.0) pry (>= 0.9.12) thor (>= 0.18.1) - guard-rspec (4.2.6) + guard-rspec (4.3.1) guard (~> 2.1) rspec (>= 2.14, < 4.0) guard-spork (1.5.1) childprocess (>= 0.2.3) guard (>= 1.1) spork (>= 0.8.4) - haml (3.1.8) - haml-rails (0.3.5) + haml (4.0.5) + tilt + haml-rails (0.4) actionpack (>= 3.1, < 4.1) activesupport (>= 3.1, < 4.1) - haml (~> 3.1) + haml (>= 3.1, < 4.1) railties (>= 3.1, < 4.1) hike (1.2.3) - i18n (0.6.1) - jbuilder (2.0.3) - activesupport (>= 3.0.0) - multi_json (>= 1.2.0) + i18n (0.6.11) + jbuilder (2.1.3) + activesupport (>= 3.0.0, < 5) + multi_json (~> 1.2) journey (1.0.4) - jquery-rails (2.3.0) + jquery-rails (3.1.1) railties (>= 3.0, < 5.0) thor (>= 0.14, < 2.0) json (1.8.1) launchy (2.4.2) addressable (~> 2.3) - less (2.2.2) - commonjs (~> 0.2.6) - less-rails (2.2.6) - actionpack (>= 3.1) - less (~> 2.2.0) - libv8 (3.3.10.4) - listen (2.4.1) + listen (2.7.9) celluloid (>= 0.15.2) rb-fsevent (>= 0.9.3) rb-inotify (>= 0.9) - lumberjack (1.0.4) + lumberjack (1.0.9) mail (2.5.4) mime-types (~> 1.16) treetop (~> 1.4.8) method_source (0.8.2) mime-types (1.25.1) - mini_portile (0.5.2) - multi_json (1.8.4) - netzke-basepack (0.8.4) - netzke-core (~> 0.8.2) + mini_portile (0.6.0) + multi_json (1.10.1) + netzke-basepack (0.10.1) + netzke-core (~> 0.10.0) netzke-cancan (0.8.2) cancan netzke-core - netzke-core (0.8.4) + netzke-core (0.10.1) execjs uglifier - nokogiri (1.6.1) - mini_portile (~> 0.5.0) + nokogiri (1.6.3.1) + mini_portile (= 0.6.0) orm_adapter (0.0.7) pg (0.17.1) - poltergeist (1.5.0) + poltergeist (1.5.1) capybara (~> 2.1) cliver (~> 0.3.1) multi_json (~> 1.0) websocket-driver (>= 0.2.0) - polyglot (0.3.3) - pry (0.9.12.6) - coderay (~> 1.0) - method_source (~> 0.8) + polyglot (0.3.5) + pry (0.10.0) + coderay (~> 1.1.0) + method_source (~> 0.8.1) slop (~> 3.4) rack (1.4.5) rack-cache (1.2) rack (>= 0.4) - rack-ssl (1.3.3) + rack-ssl (1.3.4) rack rack-test (0.6.2) rack (>= 1.0) - rails (3.2.13) - actionmailer (= 3.2.13) - actionpack (= 3.2.13) - activerecord (= 3.2.13) - activeresource (= 3.2.13) - activesupport (= 3.2.13) + rails (3.2.19) + actionmailer (= 3.2.19) + actionpack (= 3.2.19) + activerecord (= 3.2.19) + activeresource (= 3.2.19) + activesupport (= 3.2.19) bundler (~> 1.0) - railties (= 3.2.13) - railties (3.2.13) - actionpack (= 3.2.13) - activesupport (= 3.2.13) + railties (= 3.2.19) + railties (3.2.19) + actionpack (= 3.2.19) + activesupport (= 3.2.19) rack-ssl (~> 1.3.2) rake (>= 0.8.7) rdoc (~> 3.4) thor (>= 0.14.6, < 2.0) - rake (10.1.1) + rake (10.3.2) rb-fsevent (0.9.4) - rb-inotify (0.9.3) + rb-inotify (0.9.5) ffi (>= 0.5.0) rdoc (3.12.2) json (~> 1.4) - rspec (2.14.1) - rspec-core (~> 2.14.0) - rspec-expectations (~> 2.14.0) - rspec-mocks (~> 2.14.0) - rspec-core (2.14.7) - rspec-expectations (2.14.5) - diff-lcs (>= 1.1.3, < 2.0) - rspec-mocks (2.14.5) - rspec-rails (2.14.1) + rspec (3.0.0) + rspec-core (~> 3.0.0) + rspec-expectations (~> 3.0.0) + rspec-mocks (~> 3.0.0) + rspec-core (3.0.3) + rspec-support (~> 3.0.0) + rspec-expectations (3.0.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.0.0) + rspec-mocks (3.0.3) + rspec-support (~> 3.0.0) + rspec-rails (3.0.2) actionpack (>= 3.0) - activemodel (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) - rspec-core (~> 2.14.0) - rspec-expectations (~> 2.14.0) - rspec-mocks (~> 2.14.0) - shoulda-matchers (1.0.0) - slop (3.4.7) + rspec-core (~> 3.0.0) + rspec-expectations (~> 3.0.0) + rspec-mocks (~> 3.0.0) + rspec-support (~> 3.0.0) + rspec-support (3.0.3) + sass (3.3.10) + sass-rails (3.2.6) + railties (~> 3.2.0) + sass (>= 3.1.10) + tilt (~> 1.3) + slop (3.6.0) spork (0.9.2) sprockets (2.2.2) hike (~> 1.2) multi_json (~> 1.0) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) - therubyracer (0.10.2) - libv8 (~> 3.3.10) - thor (0.18.1) + thor (0.19.1) tilt (1.4.1) timers (1.1.0) treetop (1.4.15) polyglot polyglot (>= 0.3.1) - twitter-bootstrap-rails (2.0.9) - actionpack (>= 3.1) - less-rails (~> 2.2.2) - railties (>= 3.1) - therubyracer (~> 0.10.1) - tzinfo (0.3.38) - uglifier (2.4.0) + tzinfo (0.3.40) + uglifier (2.5.3) execjs (>= 0.3.0) json (>= 1.8.0) warden (1.1.1) rack (>= 1.0) - websocket-driver (0.3.2) - will_paginate (3.0.5) + websocket-driver (0.3.4) + will_paginate (3.0.7) xpath (2.0.0) nokogiri (~> 1.3) @@ -234,32 +233,32 @@ PLATFORMS DEPENDENCIES acts_as_loggable! - bootstrap-will_paginate (~> 0.0.6) + bootstrap-sass + bootstrap-will_paginate cancan capybara (~> 2.2.1) - coffee-rails (~> 3.2.1) + coffee-rails database_cleaner (~> 1.2.0) decent_exposure (~> 1.0.1) devise (~> 2.0.4) - factory_girl_rails (~> 1.2) - faker (~> 1.2.0) - guard-rspec (~> 4.2.6) - guard-spork (~> 1.5.1) - haml-rails (~> 0.3.4) - jbuilder (~> 2.0.3) - jquery-rails (~> 2.0) + factory_girl_rails + faker + guard-rspec + guard-spork + haml-rails + jbuilder + jquery-rails launchy (~> 2.4.2) - netzke-basepack (~> 0.8.0) + netzke-basepack netzke-cancan - netzke-core (~> 0.8.0) + netzke-core pg (~> 0.17.1) poltergeist (~> 1.5.0) - pry (~> 0.9.8) - rails (= 3.2.13) + pry + rails (= 3.2.19) rb-fsevent - rspec-rails (~> 2.14.0) - shoulda-matchers (~> 1.0.0) - spork (~> 0.9.2) - twitter-bootstrap-rails (~> 2.0.3) - uglifier (>= 1.0.3) - will_paginate (~> 3.0.3) + rspec-rails + sass-rails + spork + uglifier + will_paginate diff --git a/app/assets/stylesheets/bootstrap_and_overrides.css.less b/app/assets/stylesheets/bootstrap_and_overrides.css.less deleted file mode 100644 index 1d0efba..0000000 --- a/app/assets/stylesheets/bootstrap_and_overrides.css.less +++ /dev/null @@ -1,47 +0,0 @@ -@import "twitter/bootstrap/bootstrap"; -body { - padding-top: 60px; - padding-left: 20px; -} - -@import "twitter/bootstrap/responsive"; - -// Set the correct sprite paths -@iconSpritePath: asset-path('twitter/bootstrap/glyphicons-halflings.png'); -@iconWhiteSpritePath: asset-path('twitter/bootstrap/glyphicons-halflings-white.png'); - -// Set the Font Awesome (Font Awesome is default. You can disable by commenting below lines) -// Note: If you use asset_path() here, your compiled boostrap_and_overrides.css will not -// have the proper paths. So for now we use the absolute path. -@fontAwesomeEotPath: '/assets/fontawesome-webfont.eot'; -@fontAwesomeWoffPath: '/assets/fontawesome-webfont.woff'; -@fontAwesomeTtfPath: '/assets/fontawesome-webfont.ttf'; -@fontAwesomeSvgPath: '/assets/fontawesome-webfont.svg'; - -// Font Awesome -@import "fontawesome"; - -// Your custom LESS stylesheets goes here -// -// Since bootstrap was imported above you have access to its mixins which -// you may use and inherit here -// -// If you'd like to override bootstrap's own variables, you can do so here as well -// See http://twitter.github.com/bootstrap/less.html for their names and documentation -// -// Example: -// @linkColor: #ff0000; - -[data-toggle="buttons-radio"] > .btn > input[type="radio"], -[data-toggle="buttons"] > .btn > input[type="checkbox"] { - display: none; -} - -.inline-block { - display: inline-block; -} - -.control-group.error .btn-group > .btn { - color: #b94a48; - border-color: #b94a48; -} diff --git a/config/application.rb b/config/application.rb index 7d74bda..c7a4b4c 100644 --- a/config/application.rb +++ b/config/application.rb @@ -3,10 +3,7 @@ require File.expand_path('../boot', __FILE__) require 'rails/all' 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) + Bundler.require(*Rails.groups) end module Velocipede diff --git a/spec/factories/bikes.rb b/spec/factories/bikes.rb index 18ea59f..a7ff188 100644 --- a/spec/factories/bikes.rb +++ b/spec/factories/bikes.rb @@ -16,22 +16,21 @@ FactoryGirl.define do value 200 bike_condition { FactoryGirl.create(:bike_condition) } bike_purpose { FactoryGirl.create(:bike_purpose) } - end - - factory :seed_bike do - sequence(:shop_id) {|n| n} - sequence :serial_number do |n| - "#{Faker::Code.isbn}-#{n}" + factory :seed_bike do + sequence(:shop_id) {|n| n} + sequence :serial_number do |n| + "#{Faker::Code.isbn}-#{n}" + end + bike_brand_id { BikeBrand.all.sample.id } + model { Faker::Commerce.product_name } + color { sprintf("%06X", Random.rand(16777215) ) } + bike_style_id { BikeStyle.all.sample.id } + seat_tube_height { Random.rand(25) } + top_tube_length { Random.rand(25) } + bike_wheel_size_id { BikeWheelSize.all.sample.id } + value { Random.rand(200) } + bike_condition_id { BikeCondition.all.sample.id } + bike_purpose_id { BikePurpose.all.sample.id } end - bike_brand_id { BikeBrand.all.sample.id } - model { Faker::Commerce.product_name } - color { sprintf("%06X", Random.rand(16777215) ) } - bike_style_id { BikeStyle.all.sample.id } - seat_tube_height { Random.rand(25) } - top_tube_length { Random.rand(25) } - bike_wheel_size_id { BikeWheelSize.all.sample.id } - value { Random.rand(200) } - bike_condition_id { BikeCondition.all.sample.id } - bike_purpose_id { BikePurpose.all.sample.id } end end diff --git a/spec/factories/users.rb b/spec/factories/users.rb index b75147c..5d1e769 100644 --- a/spec/factories/users.rb +++ b/spec/factories/users.rb @@ -8,14 +8,14 @@ FactoryGirl.define do first_name 'Michael' last_name 'Scott' sequence(:bike_id) { |n| n } - after_build do |r| + after(:build) do |r| r.roles << (Role.find_by_role("user") || FactoryGirl.create(:role_user)) end factory :staff do username "staff" first_name 'Staff' - after_build do |r| + after(:build) do |r| r.roles << (Role.find_by_role("staff") || FactoryGirl.create(:role_staff)) end end @@ -23,7 +23,7 @@ FactoryGirl.define do factory :admin do username "admin" first_name 'Admin' - after_build do |r| + after(:build) do |r| r.roles << (Role.find_by_role("admin") || FactoryGirl.create(:role_admin)) end end @@ -31,7 +31,7 @@ FactoryGirl.define do factory :bike_admin do username "bike_admin" first_name 'BikeAdmin' - after_build do |r| + after(:build) do |r| r.roles << (Role.find_by_role("bike_admin") || FactoryGirl.create(:role_bike_admin)) end end From d9ed9feec153b8cc2f8afa364314c92e2e0c0b1b Mon Sep 17 00:00:00 2001 From: Brigitte Warner Date: Thu, 7 Aug 2014 20:43:26 -0400 Subject: [PATCH 3/5] update sign in page with bootstrap 3 --- app/assets/images/velo_logo.png | Bin 0 -> 6857 bytes app/assets/stylesheets/application.css | 27 +++++++- app/views/devise/_links.erb | 4 +- app/views/devise/sessions/new.html.erb | 86 +++++++++++++------------ 4 files changed, 72 insertions(+), 45 deletions(-) create mode 100644 app/assets/images/velo_logo.png diff --git a/app/assets/images/velo_logo.png b/app/assets/images/velo_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fa7922f7b72364c38fdcdd9019e82de1ffdccb09 GIT binary patch literal 6857 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 DU}+Ei literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 221a607..dc440fe 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -11,8 +11,31 @@ *= require_self *= require datepicker *= require bootstrap - *= require bootstrap-responsive *= require bootstrap-timepicker *= require bootstrap_and_overrides - *= require bootstrap-fontawesome */ + +.container { + max-width: 940px; + margin: 0 auto; +} + +.container img { + display: block; + margin: 0 auto; +} + +p { + text-align: center; + padding: 20px 0; +} + +.check_box { + width: 30px; + height: 30px; + background-color: white; +} + +label { + font-size: x-large; +} \ No newline at end of file diff --git a/app/views/devise/_links.erb b/app/views/devise/_links.erb index fc68770..cb9ec54 100644 --- a/app/views/devise/_links.erb +++ b/app/views/devise/_links.erb @@ -6,13 +6,13 @@ <%- if devise_mapping.registerable? && controller_name != 'registrations' %>

- <%= link_to "Sign up", new_registration_path(resource_name), class: "btn btn-block btn-default" %>
+ <%= link_to "Sign up", new_registration_path(resource_name), class: "btn btn-block btn-default btn-lg" %>

<% end -%> <%- if devise_mapping.recoverable? && controller_name != 'passwords' %>

- <%= link_to "Forgot your password?", new_password_path(resource_name), class: "btn btn-block btn-default" %>
+ <%= link_to "Forgot your password?", new_password_path(resource_name), class: "btn btn-block btn-default btn-lg" %>

<% end -%> diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb index 141a25c..e62554a 100644 --- a/app/views/devise/sessions/new.html.erb +++ b/app/views/devise/sessions/new.html.erb @@ -1,48 +1,52 @@ -<%= stylesheet_link_tag "bootstrap_and_overrides", :media => "all" %> +<%= stylesheet_link_tag "bootstrap", :media => "all" %> +<%= stylesheet_link_tag "application", :media => "all" %> +
+ <%= image_tag 'velo_logo.png' %> +

Made with ♥ in Baltimore

+
+
+ <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %> +
+
+
+ <%= f.text_field :username, placeholder: "Username", class: "form-control input-lg", autofocus: true %> +
-

Velocipede

-Made with ♥ in Baltimore -
-
-<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %> -
- <%= f.text_field :username, placeholder: "Username", class: "form-control input-lg"%> -
+
+ <%= f.password_field :password, placeholder: "Password", class: "form-control input-lg" %> +
-
- <%= f.password_field :password, placeholder: "Password", class: "form-control input-lg" %> -
+
+ <% if devise_mapping.rememberable? -%> + + <% end -%> +
+
+
+
+
+
+

+ <%= f.submit "Sign in", class:"btn btn-lg btn-primary col-xs-12 col-sm-12 col-md-12" %> +

+
+
+
+ <% end %> -
- <% if devise_mapping.rememberable? -%> - - <% end -%> -
+ <%= render "links" %> -
+ <% if Rails.env.development? %>

- <%= f.submit "Sign in", class:"btn btn-lg btn-primary" %> -

-

Or quickly...

-
- - -
-
-<% end %> - -<%= render "links" %> - -<% if Rails.env.development? %> -

- <% User.all.each do |user| %> - <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %> - <%= f.hidden_field :username, :value => user.username%> - <%= f.hidden_field :password, :value => 'password' %> - <%= f.submit "Sign in as #{user.username}", class:"btn btn-info" %> + <% User.all.each do |user| %> + <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %> + <%= f.hidden_field :username, :value => user.username%> + <%= f.hidden_field :password, :value => 'password' %> + <%= f.submit "Sign in as #{user.username}", class:"btn btn-info" %> + <% end %> <% end %> +

<% end %> -

-<% end %> +
\ No newline at end of file From 2148fec9f435bdc8283061a114f6bebe1cacb789 Mon Sep 17 00:00:00 2001 From: Brigitte Warner Date: Thu, 7 Aug 2014 20:46:26 -0400 Subject: [PATCH 4/5] add vendor and sass-cache to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 11bceed..7ec0bff 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ public/extjs public/assets public/images/icons config/database.yml +vendor/ +.sass-cache/ \ No newline at end of file From 91a5b7c64ced6bfb5992c4d5321d9d2eff4a28ca Mon Sep 17 00:00:00 2001 From: Brigitte Warner Date: Thu, 7 Aug 2014 20:55:44 -0400 Subject: [PATCH 5/5] remove unneeded sass-cache --- .../bootstrap_and_overrides.css.scssc | Bin 7499 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .sass-cache/537fb40b38351f28b6bdf09386ea293e12c7399b/bootstrap_and_overrides.css.scssc diff --git a/.sass-cache/537fb40b38351f28b6bdf09386ea293e12c7399b/bootstrap_and_overrides.css.scssc b/.sass-cache/537fb40b38351f28b6bdf09386ea293e12c7399b/bootstrap_and_overrides.css.scssc deleted file mode 100644 index d8d6d9a26ebfe901005e6ac32004f6ab138a68d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7499 zcmcIp3v(065ynnRmSkJT=4GBY$bfAQJ&et32e{=ZsB%?8sEE6(i|a}?l19>o)y`&j zWZ_WcCnP^7|0h2rmG0TuUCnxB1G%FLw6i=Lx^x-RbN+e6+)N*xvn4hdtuW?r#6VF6%t(J$$^|Y?gmt6xQVy3q#9#7jSM_ ze-=W%5k07m3hS!5<*f)E=?HHDB)N{qor1Mwi+(@k z5+0Xr?)4NMU0$FSr$ASnMcCPQT)tmDX#5cJAZ&C3XW&T5CoJ%I(D>eY&s#&@YcSt$ zfaP3wDcOB(Ssvs0@wUA3>$H6@7Nghxyd{4E?TWYYO< zAbd>c75WV-eAZ{Z9=N_Hg|C!av=5m(hWyo$Zgm64mvP1X!GSDbZjs(Ow&6!4v#gd3 zfE{drDtXxSKPaXU#v`9wE09~Bbovetz+&NJvWFkffVK@Gsq{FK1gB|Vg$dl}YRrL4-Or6DOA)k?TNrlKPTcw0uHz?L((U7ysIXNUc7+P<; z5tGnw?JYrXYj3Z{-gbFkqG!O5bQ8Tvw<4F_*Dj;m^e)nZZ;Bb;6u}!85(RN}Igtjw zq4#J_J0p)Wb%se-u&+mI7P=O6{%#=t%DhbTF$4Vl{q;2(r_-y0-$sDjeDu$=MlGWfTeL=0DN zV*f(@F9Ybj=SLF}^Z+t%MELcCbX?1NBZ3igoxk%QoT3X*Pq42ICjm+a^eNdR=ELuz z9r`WG3hdo^qde2h;)vi7*(l4`j8HH#e`r36KyIRdhA$cd_yHde~kHW~7O-@{J<^6;T(djz_Y8BGb9IIc@PAqjGh{tVe6SAc*= z0uLe}sFRi;eG$Ok37K#u7eNEM3E_@4T+|b|p!anip2esN8fDj|KKMhs8x@?LGiJGiWK5dr;nk}&5o33CpDb2SMyuAUm9o(^*!Z5n2icFK_TDMNmO zj&hbIw@7pDUMWH^zaZ!}?EHcHy6)}u+1N_16E7s3g$Cy2H23eQ%?BRv404|%_tcOp*-Oex7vQ!S8Bv5VC^eN1$mm<93Y7pDJ~baJTA->1~4X#0{B~#1pu>b(*MODQ+v(q&&aWH=BmS z&yFb^RSm|ofc@KTeVO||JyoT zjbtF)+8_{PzYe24XovA6j$Y_vIVUl0g05*|;HqYLB|b;v#3<>+02ql8Yt4|YWK^7+ zNoJ%Q%Sx?ugFWAxI}PVk-SAYpf_Vc(YWf8taB)0SD~a7-CM#{sQP%AoS)T>lTCdYA z+e+{PrQOSs2A~l0!r5MegypVqMWAfU;Na3m=gA)1d#t{trBKbJRuu%UB;s*((Fl4v zRm!7GOTnZ}O5syl3b!JGp&f-8JWgw1z&!t--{F5zkdLHX zif4{6;k5{kWNG>i=a3e`p(8DSDwoTR#);##@-1^jW<_^-HTBxs{JcR5j!-tYX~Zfs zy7?M@>0k!APFwIA@bA~1W`KKsqiF_k{=cUg%iXj(8&^0=xMqrEcsOm{`m nUgJ2NbrdTm3fL^7L7Rf;X~diQ@JZca04h$Oxfc?&jiBOxh-`@N