From 30551902b8e6ca96febed4e973e206aacaa41a34 Mon Sep 17 00:00:00 2001 From: Ben Moskovitz Date: Tue, 31 Jul 2018 16:44:00 +1200 Subject: [PATCH 01/40] Use less jargon in the installfest opener --- sites/en/installfest/installfest.step | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/sites/en/installfest/installfest.step b/sites/en/installfest/installfest.step index 38e25a286..7aced5e1d 100644 --- a/sites/en/installfest/installfest.step +++ b/sites/en/installfest/installfest.step @@ -41,18 +41,12 @@ step "Read This Overview" do Here's a list of tools you'll be installing. As you go through the workshop, we'll explain what each one is for and how to use it. * **Ruby**. A programming language. -* **Rails**. A framework for making web applications with Ruby. It does a lot of the setting up work for you and creates a model-view-controller structure for your web application. We'll go into more detail about that later. -* **Git**. A revision or source control system. It creates a repository, which is a complete history of your programming changes, so you can undo changes and roll back to previous versions of your work if something has gone wrong. -* **GitHub**. (optional) -* **Heroku**. An application server, which hosts your application during development. This allows you to get your application online and interact with it from any browser, instead of just on your local machine. +* **Rails**. A framework for making web applications with Ruby. It does a lot of the setting up work for you, which is really handy, but we'll cover this in more detail a little later. +* **Git**. A revision or source control system. It creates a _repository_ (sometimes called a _repo_ for short), which is a complete history of your changes to what you're working on. This means you can undo changes and roll back to previous versions of your work if something has gone wrong. +* **GitHub** (optional). A place to store your Git repository online, so you can access it from any computer. +* **Heroku**. An _application server_, which hosts your application while you're working on it. This allows you to access your app online and interact with it from any browser, instead of just on your local computer. * **Atom** (or [some other editor](editors)). To write programs in Ruby, you need a text editor to create, edit and save Ruby files. -* Various useful "**Ruby gems**". Ruby gems are useful bits of Ruby code that someone has created for reuse, so you don't have to write it yourself. Including... - * bundler - * sqlite - -You will also create an account on Heroku, an application hosting platform. - -If you already have an account on Heroku, make sure you know your username and password. +* A couple of useful **Ruby gems**. Ruby gems are useful bits of Ruby code that someone has created for reuse, so you don't have to write it yourself. If you've already installed the above tools and are confident they are setup correctly, skip ahead to the Get a Sticker step. From 0bd984fcce111e33b68c1f25a19124ff9fbc0ab2 Mon Sep 17 00:00:00 2001 From: Ben Moskovitz Date: Tue, 31 Jul 2018 16:22:01 +1200 Subject: [PATCH 02/40] Update logos and macOS name on 'choose your OS' page --- public/img/macface.jpg | Bin 14951 -> 0 bytes public/img/macos.png | Bin 0 -> 69495 bytes public/img/windows.png | Bin 146456 -> 22895 bytes .../choose_your_operating_system.step | 6 +++--- 4 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 public/img/macface.jpg create mode 100644 public/img/macos.png diff --git a/public/img/macface.jpg b/public/img/macface.jpg deleted file mode 100644 index ad64b2cd7ce5be036fb21d55f03efa7d445a70ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14951 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

bx3;<%PD=2Sjw-4lMK zSReHZrR{GZEvlXluS8>&G3n+ZzmDiL{@BaRL{?m^M$1H3MsRXi)GJsY>9PamgNZlb z6#fCC%Yo#;3NOCntH50gB!$&E(r&VQuUfUJTMS*Z)fDkd!J2@)@jIM0>5t9d0P_dr zd)<*P#d`X{BREp6zQQ<~5B$gMrvyId7FgpSp#9*uXw^Z4^Fgtq78IkA6cOjjgzhE6 z3a;ybvS@uYJn%tVIEDWX5fkXFn;AJryf z3dq@@b!`0*jjTTrk0INZbwYiAa+Q)GTQX(T^eU5jZDtJ^@6=ibZ&x}v(|&{tOZZO3rS0(L zkTIoe<094~r050k&2iFn{7;trgQ%4+$6%b<&=vca#}ow@$i)JBX(T zY8x$jILGfBKp5%E536V54)T^KiSYFqP(y)M3SYmjTv<@1N?s?A3L}mSs#cQ})VID@ zP2l^eV3nAO2(A+yV=+tOR2xs|3^}}}7)N&BcyUY(-iZ4^57WNkIJc3eDspGTe`IHE z@lY`qwpM>Eo5E(9+JDg7Vi0dgpmeD&YYIB;$z2urhb<>d1V}Ux_VU17aD{wL< zDsGr`ol|YWhOSTg#VY%^L}h3G{x*W7iJl2&J}K8wIqGdObjW~kZ7hBJ9fQ%jEsNBS n20t4v{5>Z0KUDhP#&HV+3EAxXp=+h!E3Bmdz-lA|h+F<2;poO> diff --git a/public/img/macos.png b/public/img/macos.png new file mode 100644 index 0000000000000000000000000000000000000000..3cfddbd359583efd1b5f565d00047e5156dc0550 GIT binary patch literal 69495 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�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 Eg5hfB2><{9 literal 0 HcmV?d00001 diff --git a/public/img/windows.png b/public/img/windows.png index 938bf552c5256ee6e7a529cadceaa81152a35b68..a2ef856f88b2be7d0d3456f01f76534622dbc4c4 100644 GIT binary patch literal 22895 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 literal 146456 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 Date: Fri, 3 Aug 2018 17:17:06 -0500 Subject: [PATCH 03/40] Fix 'macOS' page to actually exist Redirect 'macintosh' page to 'macOS' --- app.rb | 12 ++++++++++++ lib/titleizer.rb | 7 ++++--- sites/en/installfest/{macintosh.step => macOS.step} | 0 3 files changed, 16 insertions(+), 3 deletions(-) rename sites/en/installfest/{macintosh.step => macOS.step} (100%) diff --git a/app.rb b/app.rb index 1152d9166..fdb12c9dc 100755 --- a/app.rb +++ b/app.rb @@ -100,6 +100,12 @@ def redirect_sites } end + def redirect_pages + { + 'installfest/macintosh' => 'installfest/macOS' + } + end + before do begin I18n.locale = dynamic_locale @@ -287,6 +293,12 @@ def render_deck site_name = params[:site] if redirect_sites[site_name] redirect "#{redirect_sites[site_name]}/#{params[:name]}" + return + end + + page_url = "#{params[:site]}/#{params[:name]}" + if redirect_pages[page_url] + redirect redirect_pages[page_url] else render_page end diff --git a/lib/titleizer.rb b/lib/titleizer.rb index 816fd2c88..b6a5034fb 100644 --- a/lib/titleizer.rb +++ b/lib/titleizer.rb @@ -19,7 +19,8 @@ def self.title_for_page page_name special_cases = { 'jquery' => 'jQuery', - 'osx' => 'OS X' + 'osx' => 'OS X', + 'macos' => 'macOS' } page_name.split(/[-_]/).map do |w| @@ -27,8 +28,8 @@ def self.title_for_page page_name w.upcase elsif to_be_lowercased.include?(w.downcase) w.downcase - elsif special_cases.include?(w) - special_cases[w] + elsif special_cases.include?(w.downcase) + special_cases[w.downcase] else w.capitalize end diff --git a/sites/en/installfest/macintosh.step b/sites/en/installfest/macOS.step similarity index 100% rename from sites/en/installfest/macintosh.step rename to sites/en/installfest/macOS.step From d85af760cfcd8e5a6344354bf939071d9bfab831 Mon Sep 17 00:00:00 2001 From: Jordan Crawford Date: Thu, 9 Aug 2018 18:50:21 +1200 Subject: [PATCH 04/40] Add en to the Rails installer link Without the `en` the Rails installer site times out. --- sites/en/installfest/windows.step | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/en/installfest/windows.step b/sites/en/installfest/windows.step index 32400da30..729cec802 100644 --- a/sites/en/installfest/windows.step +++ b/sites/en/installfest/windows.step @@ -6,7 +6,7 @@ MARKDOWN step "Run RailsInstaller" do message "RailsInstaller includes Rails, Ruby, Git and SQLite." - message "Go to , scroll to the 'Downloads' section, and download the RailsInstaller for Windows/Ruby #{version_string(:ruby_short)}." + message "Go to , scroll to the 'Downloads' section, and download the RailsInstaller for Windows/Ruby #{version_string(:ruby_short)}." message "Click on the downloaded file to run the install wizard. Click Next at each step to accept the defaults." message "Be sure to check the boxes for *Install git (recommended)* and *Add executables for Ruby, DevKit Git (if checked above) to the PATH*" From c9646ee6273a768084b50f53154b4990457b5298 Mon Sep 17 00:00:00 2001 From: Jordan Crawford Date: Thu, 9 Aug 2018 18:55:17 +1200 Subject: [PATCH 05/40] Update the Heroku step to mention heroku rather than heroku-cli As per https://www.npmjs.com/package/heroku-cli, heroku-cli has renamed to heroku (https://www.npmjs.com/package/heroku) --- sites/en/installfest/create_a_heroku_account.step | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sites/en/installfest/create_a_heroku_account.step b/sites/en/installfest/create_a_heroku_account.step index a2df4d3a2..8b364187d 100644 --- a/sites/en/installfest/create_a_heroku_account.step +++ b/sites/en/installfest/create_a_heroku_account.step @@ -24,11 +24,11 @@ step "Install the Heroku CLI" do console "heroku version" fuzzy_result <<-TEXT {FUZZY}heroku-toolbelt/3.30.6 (x86_64-darwin10.8.0) ruby/1.9.3{/FUZZY} - heroku-cli{FUZZY}/5.6.8-9647e01 (darwin-amd64) go1.7.4{/FUZZY} + heroku{FUZZY}/7.6.0 darwin-x64 node-v10.6.0{/FUZZY} {FUZZY}You have no installed plugins.{/FUZZY} TEXT end - message "The output could be different, depending on whether this is the first time you've installed the Heroku CLI, but it should always have `heroku-cli` in it." + message "The output could be different, depending on whether this is the first time you've installed the Heroku CLI, but it should always have `heroku` in it." message "If `heroku version` doesn't work, try the command again in a new terminal window." end From 8a97e530b3983ebbf4789ffbb0c41eba33201948 Mon Sep 17 00:00:00 2001 From: kendocode Date: Thu, 15 Nov 2018 14:06:50 -0600 Subject: [PATCH 06/40] Update ruby_short version string to Heroku minimum Student for upcoming Railsbridge Tulsa event reports unable to use Heroku with recommended Ruby version of 2.3. Heroku current minimum version is 2.3.8. We suggested trying latest, and user reports no problems with 2.5.3. --- lib/site_extensions/installfest.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/site_extensions/installfest.rb b/lib/site_extensions/installfest.rb index 4b4924dfd..08c157d68 100644 --- a/lib/site_extensions/installfest.rb +++ b/lib/site_extensions/installfest.rb @@ -3,7 +3,7 @@ module Installfest def version_string(name) case name when :ruby_short - '2.3' + '2.3.8' when :windows_rubygems_min '2.6.7' when :windows_rubygems_min_short @@ -13,4 +13,4 @@ def version_string(name) end end end -end \ No newline at end of file +end From 11247abbbd211660679d29b4a7e99a091c6b117d Mon Sep 17 00:00:00 2001 From: Matt Luker Date: Wed, 10 Jul 2019 15:59:08 -0500 Subject: [PATCH 07/40] Update correct link for mvc diagram --- sites/en/workshop/diagrams.mw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/en/workshop/diagrams.mw b/sites/en/workshop/diagrams.mw index 3651c174a..f32b9112e 100644 --- a/sites/en/workshop/diagrams.mw +++ b/sites/en/workshop/diagrams.mw @@ -2,7 +2,7 @@ * MVC: http://github.com/alexch/mission/raw/master/mvc.png -* MVC: https://www.railstutorial.org/book/demo_app#sec-mvc_in_action +* MVC: https://www.railstutorial.org/book/toy_app#sec-exercises_mvc_in_action * REST: From 943611f035ca292082c05b3262ab4abb74085bb6 Mon Sep 17 00:00:00 2001 From: cuchalin <57273909+cuchalin@users.noreply.github.com> Date: Wed, 13 Nov 2019 02:02:29 -0800 Subject: [PATCH 08/40] added missing commas MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ‘Hopefully, it addressed most of your concerns about git,…’ --- added comma after Hopefully ‘In order to contribute, you’ll need to be able to familiarize yourself…’ ---added comma after contribute --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e53b2f993..937117101 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -69,7 +69,7 @@ maintainers to love you. :heart:* # It's My First Time on GitHub Ever What Do I Do? -Relax, you came to the right place. In order to contribute you'll need to be +Relax, you came to the right place. In order to contribute, you'll need to be able to familiarize yourself with some concepts from git and GitHub. It's going to be a lot of information, but you're :sparkles:awesome:sparkles:! So you'll be fine. @@ -100,7 +100,7 @@ at . Do it. It's worth it no matter how much git-fu you Also, [Pro Git](http://git-scm.com/book) is a great (and free!) book about Git. -We apologize for how long this document is! Hopefully it addressed +We apologize for how long this document is! Hopefully, it addressed most of your concerns about git, contributing, and GitHub. Feel free to ask more questions on the [railsbridge-workshops](http://groups.google.com/group/railsbridge-workshops) From 396d975da638728dde7160398f510aa9497b9f46 Mon Sep 17 00:00:00 2001 From: Jonas Pfannkuche Date: Tue, 7 Dec 2021 19:40:27 +0100 Subject: [PATCH 09/40] Update job board update list step Replace deprecated "update_attributes" with "update". --- sites/en/job-board/update_job_listings.step | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/en/job-board/update_job_listings.step b/sites/en/job-board/update_job_listings.step index 23a5c280f..52ceb2803 100644 --- a/sites/en/job-board/update_job_listings.step +++ b/sites/en/job-board/update_job_listings.step @@ -148,7 +148,7 @@ source_code_with_message "Here's what the update method should actually look lik <<-RUBY def update @job = Job.find(params[:id]) - @job.update_attributes(job_params) + @job.update(job_params) redirect_to jobs_path end RUBY From 116dfe20b5d7131a4717f2fcbff57e457eb23cf5 Mon Sep 17 00:00:00 2001 From: Fer Perales Date: Fri, 25 Feb 2022 11:51:05 -0600 Subject: [PATCH 10/40] Upgrade Ruby version and dependencies There are probable more gems than need to be updated, but this was the minimum set that allowed me to upgrade to Ruby 2.7.5 * Upgrade Ruby to 2.7.5 * Upgrade thin to 1.8.1 * Upgrade ffi to 1.15.5 * Upgrade backports to 3.23.0 * Upgrade bundler version to 2.3.8 --- Gemfile | 6 ++++-- Gemfile.lock | 14 ++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Gemfile b/Gemfile index a9b60be45..ab6a5ab0e 100644 --- a/Gemfile +++ b/Gemfile @@ -1,13 +1,13 @@ source "https://rubygems.org/" -ruby '2.3.3' +ruby '2.7.5' gem 'activesupport' gem "erector", "~> 0.10.0" gem "sinatra", "~> 1.4.0" gem "sinatra-contrib", "~> 1.4.0" gem "nokogiri" -gem "thin" +gem "thin", "1.8.1" gem 'rack-codehighlighter' gem 'coderay' gem "deckrb", "~> 0.5.2" @@ -19,6 +19,8 @@ gem 'font-awesome-sass' gem 'bootstrap-sass' gem 'jquery-cdn' gem 'sprockets' +gem 'ffi', "1.15.5" +gem 'backports', "3.23.0" group :development do gem "rspec" diff --git a/Gemfile.lock b/Gemfile.lock index 20819727d..4a14801cf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,7 +8,7 @@ GEM tzinfo (~> 1.1) autoprefixer-rails (6.7.7) execjs - backports (3.6.8) + backports (3.23.0) bootstrap-sass (3.3.7) autoprefixer-rails (>= 5.2.1) sass (>= 3.3.4) @@ -30,7 +30,7 @@ GEM treetop (>= 1.2.3) eventmachine (1.2.3) execjs (2.7.0) - ffi (1.9.18) + ffi (1.15.5) files (0.3.1) font-awesome-sass (4.7.0) sass (>= 3.2) @@ -93,7 +93,7 @@ GEM sprockets (3.7.1) concurrent-ruby (~> 1.0) rack (> 1, < 3) - thin (1.7.0) + thin (1.8.1) daemons (~> 1.0, >= 1.0.9) eventmachine (~> 1.0, >= 1.0.4) rack (>= 1, < 3) @@ -110,10 +110,12 @@ PLATFORMS DEPENDENCIES activesupport + backports (= 3.23.0) bootstrap-sass coderay deckrb (~> 0.5.2) erector (~> 0.10.0) + ffi (= 1.15.5) files (~> 0.3.0) font-awesome-sass i18n (~> 0.7) @@ -131,10 +133,10 @@ DEPENDENCIES sinatra (~> 1.4.0) sinatra-contrib (~> 1.4.0) sprockets - thin + thin (= 1.8.1) RUBY VERSION - ruby 2.3.3p222 + ruby 2.7.5p203 BUNDLED WITH - 1.14.3 + 2.3.8 From 592fec9f88fe7a614347a11deece34ce6eeb46ac Mon Sep 17 00:00:00 2001 From: Fer Perales Date: Fri, 4 Mar 2022 10:47:55 -0600 Subject: [PATCH 11/40] Update .ruby-version file --- .ruby-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ruby-version b/.ruby-version index 0bee604df..a603bb50a 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.3.3 +2.7.5 From 9cca509d32d3be2f55ff3e590aba663803bac754 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Mar 2022 18:02:17 +0000 Subject: [PATCH 12/40] Bump activesupport from 5.0.2 to 5.2.4.3 Bumps [activesupport](https://github.com/rails/rails) from 5.0.2 to 5.2.4.3. - [Release notes](https://github.com/rails/rails/releases) - [Changelog](https://github.com/rails/rails/blob/v6.0.3.1/activesupport/CHANGELOG.md) - [Commits](https://github.com/rails/rails/compare/v5.0.2...v5.2.4.3) Signed-off-by: dependabot[bot] --- Gemfile.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4a14801cf..2f092152a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,9 +1,9 @@ GEM remote: https://rubygems.org/ specs: - activesupport (5.0.2) + activesupport (5.2.4.3) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (~> 0.7) + i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) autoprefixer-rails (6.7.7) @@ -13,7 +13,7 @@ GEM autoprefixer-rails (>= 5.2.1) sass (>= 3.3.4) coderay (1.1.1) - concurrent-ruby (1.0.5) + concurrent-ruby (1.1.9) daemons (1.2.4) deckrb (0.5.2) coderay @@ -43,7 +43,7 @@ GEM rb-inotify (~> 0.9, >= 0.9.7) ruby_dep (~> 1.2) mini_portile2 (2.1.0) - minitest (5.10.1) + minitest (5.15.0) multi_json (1.12.1) nokogiri (1.7.0.1) mini_portile2 (~> 2.1.0) @@ -102,7 +102,7 @@ GEM treetop (1.6.8) polyglot (~> 0.3) trollop (2.1.2) - tzinfo (1.2.2) + tzinfo (1.2.9) thread_safe (~> 0.1) PLATFORMS From 1071f0b77efaa88a16b557e8b98d5daa71ab5351 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Mar 2022 01:15:05 +0000 Subject: [PATCH 13/40] Bump rubyzip from 1.2.1 to 1.3.0 Bumps [rubyzip](https://github.com/rubyzip/rubyzip) from 1.2.1 to 1.3.0. - [Release notes](https://github.com/rubyzip/rubyzip/releases) - [Changelog](https://github.com/rubyzip/rubyzip/blob/master/Changelog.md) - [Commits](https://github.com/rubyzip/rubyzip/compare/v1.2.1...v1.3.0) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4a14801cf..a6f638c4b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -77,7 +77,7 @@ GEM rspec-support (~> 3.5.0) rspec-support (3.5.0) ruby_dep (1.5.0) - rubyzip (1.2.1) + rubyzip (1.3.0) sass (3.4.23) sinatra (1.4.8) rack (~> 1.5) From a3b54853fb999bafbfb00d0689edccad34275d92 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Mar 2022 01:17:27 +0000 Subject: [PATCH 14/40] Bump rake from 12.0.0 to 12.3.3 Bumps [rake](https://github.com/ruby/rake) from 12.0.0 to 12.3.3. - [Release notes](https://github.com/ruby/rake/releases) - [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc) - [Commits](https://github.com/ruby/rake/compare/v12.0.0...v12.3.3) Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index a6f638c4b..65f085b47 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -56,7 +56,7 @@ GEM rack rack-test (0.6.3) rack (>= 1.0) - rake (12.0.0) + rake (12.3.3) rb-fsevent (0.9.8) rb-inotify (0.9.8) ffi (>= 0.5.0) From ac1183217a856fbb2dfcea568858341bcb0e9d9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Mar 2022 01:19:49 +0000 Subject: [PATCH 15/40] Bump rack from 1.6.5 to 1.6.13 Bumps [rack](https://github.com/rack/rack) from 1.6.5 to 1.6.13. - [Release notes](https://github.com/rack/rack/releases) - [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md) - [Commits](https://github.com/rack/rack/compare/1.6.5...1.6.13) --- updated-dependencies: - dependency-name: rack dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f43c37337..74ede6ab4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -48,7 +48,7 @@ GEM nokogiri (1.7.0.1) mini_portile2 (~> 2.1.0) polyglot (0.3.5) - rack (1.6.5) + rack (1.6.13) rack-codehighlighter (0.5.1) nokogiri (>= 1.4.1) rack (>= 1.0.0) From 41bf9190de32de4948d56882ce28593fc76488b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Mar 2022 01:20:10 +0000 Subject: [PATCH 16/40] Bump json from 2.0.3 to 2.6.1 Bumps [json](https://github.com/flori/json) from 2.0.3 to 2.6.1. - [Release notes](https://github.com/flori/json/releases) - [Changelog](https://github.com/flori/json/blob/master/CHANGES.md) - [Commits](https://github.com/flori/json/compare/v2.0.3...v2.6.1) --- updated-dependencies: - dependency-name: json dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f43c37337..fbaa6ae2a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -37,7 +37,7 @@ GEM i18n (0.8.1) jquery-cdn (2.2.4) sprockets (>= 2) - json (2.0.3) + json (2.6.1) listen (3.1.5) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) From 18a3b636a299d8723b2d91bcb7507f2b85a3b9ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Mar 2022 01:21:38 +0000 Subject: [PATCH 17/40] Bump nokogiri from 1.7.0.1 to 1.13.2 Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.7.0.1 to 1.13.2. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.7.0.1...v1.13.2) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 19979f0cf..e9a6e8ebd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -42,12 +42,14 @@ GEM rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) ruby_dep (~> 1.2) - mini_portile2 (2.1.0) + mini_portile2 (2.8.0) minitest (5.15.0) multi_json (1.12.1) - nokogiri (1.7.0.1) - mini_portile2 (~> 2.1.0) + nokogiri (1.13.2) + mini_portile2 (~> 2.8.0) + racc (~> 1.4) polyglot (0.3.5) + racc (1.6.0) rack (1.6.13) rack-codehighlighter (0.5.1) nokogiri (>= 1.4.1) From 92cf32f3efc1081664960bdb4657e7dfe7cc6754 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Mar 2022 01:21:47 +0000 Subject: [PATCH 18/40] Bump bootstrap-sass from 3.3.7 to 3.4.1 Bumps [bootstrap-sass](https://github.com/twbs/bootstrap-sass) from 3.3.7 to 3.4.1. - [Release notes](https://github.com/twbs/bootstrap-sass/releases) - [Changelog](https://github.com/twbs/bootstrap-sass/blob/master/CHANGELOG.md) - [Commits](https://github.com/twbs/bootstrap-sass/compare/v3.3.7...v3.4.1) --- updated-dependencies: - dependency-name: bootstrap-sass dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 19979f0cf..958ee55ac 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -6,12 +6,12 @@ GEM i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) - autoprefixer-rails (6.7.7) - execjs + autoprefixer-rails (10.4.2.0) + execjs (~> 2) backports (3.23.0) - bootstrap-sass (3.3.7) + bootstrap-sass (3.4.1) autoprefixer-rails (>= 5.2.1) - sass (>= 3.3.4) + sassc (>= 2.0.0) coderay (1.1.1) concurrent-ruby (1.1.9) daemons (1.2.4) @@ -29,7 +29,7 @@ GEM erector (0.10.0) treetop (>= 1.2.3) eventmachine (1.2.3) - execjs (2.7.0) + execjs (2.8.1) ffi (1.15.5) files (0.3.1) font-awesome-sass (4.7.0) @@ -79,6 +79,8 @@ GEM ruby_dep (1.5.0) rubyzip (1.3.0) sass (3.4.23) + sassc (2.4.0) + ffi (~> 1.9) sinatra (1.4.8) rack (~> 1.5) rack-protection (~> 1.4) From 7dcd153d7b305da9f6129590fcaa5c7db36dbca9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Mar 2022 01:23:39 +0000 Subject: [PATCH 19/40] Bump rack-protection from 1.5.3 to 1.5.5 Bumps [rack-protection](https://github.com/sinatra/sinatra) from 1.5.3 to 1.5.5. - [Release notes](https://github.com/sinatra/sinatra/releases) - [Changelog](https://github.com/sinatra/sinatra/blob/master/CHANGELOG.md) - [Commits](https://github.com/sinatra/sinatra/commits) --- updated-dependencies: - dependency-name: rack-protection dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 63376a0b0..3e75a944f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -54,7 +54,7 @@ GEM rack-codehighlighter (0.5.1) nokogiri (>= 1.4.1) rack (>= 1.0.0) - rack-protection (1.5.3) + rack-protection (1.5.5) rack rack-test (0.6.3) rack (>= 1.0) From bf48bd2f242e06ff60a015841fbbe9a968db0eab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Mar 2022 01:23:41 +0000 Subject: [PATCH 20/40] Bump sprockets from 3.7.1 to 3.7.2 Bumps [sprockets](https://github.com/rails/sprockets) from 3.7.1 to 3.7.2. - [Release notes](https://github.com/rails/sprockets/releases) - [Changelog](https://github.com/rails/sprockets/blob/v3.7.2/CHANGELOG.md) - [Commits](https://github.com/rails/sprockets/compare/v3.7.1...v3.7.2) --- updated-dependencies: - dependency-name: sprockets dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 63376a0b0..ad86ca7c2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -94,7 +94,7 @@ GEM rack-test sinatra (~> 1.4.0) tilt (>= 1.3, < 3) - sprockets (3.7.1) + sprockets (3.7.2) concurrent-ruby (~> 1.0) rack (> 1, < 3) thin (1.8.1) From d957d7a60870620e0ffa01ea86fcffdbc4436223 Mon Sep 17 00:00:00 2001 From: Fiona Tang <79673633+fionatagious@users.noreply.github.com> Date: Sun, 18 Apr 2021 21:30:43 -0700 Subject: [PATCH 21/40] change "master" language to "main" --- sites/en/intro-to-rails/_deploying_to_heroku_again.step | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sites/en/intro-to-rails/_deploying_to_heroku_again.step b/sites/en/intro-to-rails/_deploying_to_heroku_again.step index 42426cb7f..753f43c7a 100644 --- a/sites/en/intro-to-rails/_deploying_to_heroku_again.step +++ b/sites/en/intro-to-rails/_deploying_to_heroku_again.step @@ -12,7 +12,7 @@ changes are: something like \"Added votes to the topics index\"." end step "Push changes to Heroku" do - console "git push heroku master" + console "git push heroku main" message "This takes all changes you've committed locally and pushes them to Heroku." end @@ -57,5 +57,5 @@ required updating the `Gemfile` and bundling. li { message "Commit your changes (`git commit`)" } li { message "(repeat)" } end - message "Any time your changes are committed, you should feel free to `git push heroku master` and boom! Your changes are live!" + message "Any time your changes are committed, you should feel free to `git push heroku main` and boom! Your changes are live!" end From e3722adea70666cb59cf5154db55364244d8c48f Mon Sep 17 00:00:00 2001 From: Fernando Date: Fri, 1 Apr 2022 12:24:31 -0600 Subject: [PATCH 22/40] Move localization from directory-based to i18n-based This commit removes the need of having an specific folder per language inside /docs With only one top-level doc, we can handle translations on their corresponding files now living under locales Each language now has its own folder, which is going to make easier to implement continuos localization with Crowdin --- app.rb | 183 ++++++++---------- lib/site.rb | 27 ++- lib/site_index.rb | 2 +- locales/en.yml | 34 ---- locales/en/captions.yml | 7 + locales/en/general.yml | 14 ++ locales/en/header_sections.yml | 10 + locales/en/sites.yml | 3 + locales/es/captions.yml | 7 + locales/es/general.yml | 14 ++ locales/es/header_sections.yml | 10 + locales/es/sites.yml | 3 + locales/zh-tw/captions.yml | 7 + locales/zh-tw/general.yml | 14 ++ locales/zh-tw/header_section.yml | 10 + sites/{en => }/docs/docs.step | 0 sites/es/hola/hola.step | 1 - sites/{en => }/frontend/HTML_attributes.step | 0 sites/{en => }/frontend/HTML_structure.step | 0 sites/{en => }/frontend/HTML_tags.step | 0 .../_consider_deploying_to_github.step | 0 .../_consider_deploying_to_github_again.step | 0 sites/{en => }/frontend/_developer_tools.step | 0 .../_working_effectively_and_efficiently.md | 0 .../{en => }/frontend/add_more_elements.step | 0 .../{en => }/frontend/add_starter_files.step | 0 sites/{en => }/frontend/basic_CSS.step | 0 sites/{en => }/frontend/basic_javascript.step | 0 .../frontend/deploying_to_github.step | 0 .../frontend/deploying_to_github_again.step | 0 sites/{en => }/frontend/developer_tools.step | 0 .../frontend/front-end-lesson.zip-manifest | 0 sites/{en => }/frontend/frontend.step | 0 sites/{en => }/frontend/get_a_sticker.step | 0 sites/{en => }/frontend/grid.html | 0 .../frontend/griding_with_bootstrap.step | 0 .../{en => }/frontend/html_quick_reference.md | 0 sites/{en => }/frontend/img/boxmodel.png | Bin sites/{en => }/frontend/img/css.png | Bin sites/{en => }/frontend/img/css_bundler.png | Bin sites/{en => }/frontend/img/css_class.png | Bin sites/{en => }/frontend/img/css_id.png | Bin sites/{en => }/frontend/img/css_zen.png | Bin sites/{en => }/frontend/img/devtools.png | Bin .../frontend/img/devtools_console.png | Bin .../frontend/img/devtools_elements.png | Bin .../frontend/img/devtools_network.png | Bin .../{en => }/frontend/img/devtools_script.png | Bin .../img/get_a_sticker_fork_button.png | Bin .../frontend/img/get_a_sticker_https.png | Bin .../frontend/img/get_a_sticker_output.png | Bin .../frontend/img/github_create_repo.png | Bin .../frontend/img/github_name_your_repo.png | Bin sites/{en => }/frontend/img/hello_html.png | Bin sites/{en => }/frontend/img/hello_omg.png | Bin .../{en => }/frontend/img/hello_structure.png | Bin sites/{en => }/frontend/img/hello_style.png | Bin sites/{en => }/frontend/img/hello_title.png | Bin sites/{en => }/frontend/img/hello_world.png | Bin .../frontend/img/hello_world_2line.png | Bin .../frontend/img/hello_world_2line2.png | Bin .../frontend/img/hello_world_jazzy.png | Bin .../{en => }/frontend/img/html_tags_list.png | Bin sites/{en => }/frontend/img/jquery_result.png | Bin sites/{en => }/frontend/img/page.png | Bin sites/{en => }/frontend/img/page_anchors.png | Bin sites/{en => }/frontend/img/page_html.png | Bin sites/{en => }/frontend/img/page_img.png | Bin sites/{en => }/frontend/img/page_sample.jpg | Bin sites/{en => }/frontend/img/prompt.png | Bin sites/{en => }/frontend/img/zip.png | Bin .../frontend/introduction_to_html.step | 0 sites/{en => }/frontend/jquery.step | 0 .../frontend/jquery_vs_javascript.step | 0 sites/{en => }/frontend/make_a_web_page.step | 0 sites/{en => }/frontend/make_columns.step | 0 sites/{en => }/frontend/resources.step | 0 .../{en => }/frontend/tool_installation.step | 0 .../{en => }/frontend/zip_content/.gitignore | 0 .../{en => }/frontend/zip_content/index.html | 0 .../zip_content/resources/javascript.js | 0 .../frontend/zip_content/resources/layout.css | 0 .../zip_content/resources/picture.jpg | Bin .../installfest/_command-line-glossary.md | 0 .../{en => }/installfest/_general-glossary.md | 0 .../installfest/_install_atom_for_mac.step | 0 .../installfest/_install_homebrew.step | 0 sites/{en => }/installfest/_install_ruby.step | 0 sites/{en => }/installfest/_install_rvm.step | 0 .../installfest/_install_textmate.step | 0 .../installfest/_ruby-and-rails-glossary.md | 0 .../_switch_to_home_directory.step | 0 .../choose_your_operating_system.step | 0 sites/{en => }/installfest/clean_up.step | 0 sites/{en => }/installfest/configure_git.step | 0 .../installfest/create_a_github_account.step | 0 .../installfest/create_a_heroku_account.step | 0 .../installfest/create_a_rails_app.step | 0 .../installfest/create_an_ssh_key.step | 0 .../installfest/deploy_a_rails_app.step | 0 sites/{en => }/installfest/editors.step | 0 sites/{en => }/installfest/get_a_sticker.step | 0 sites/{en => }/installfest/glossary.step | 0 .../{en => }/installfest/img/AboutThisMac.png | Bin .../installfest/img/WinRailsInstaller.jpg | Bin sites/{en => }/installfest/img/appstore.jpg | Bin sites/{en => }/installfest/img/directory.png | Bin .../img/get_a_sticker_you_should_see.png | Bin .../installfest/img/install_atom_mac.gif | Bin .../img/railsbridge_ubuntu12-checkbox.png | Bin ...reenshot-commandprompt-pinnedtotaskbar.png | Bin ...ge_windowsScreenshot-commandprompt_ror.png | Bin ...idge_windows_findingCommandPrompt_win7.png | Bin ...idge_windows_findingCommandPrompt_win8.png | Bin .../img/successful_rails_install.png | Bin .../{en => }/installfest/img/xcode-prefs.jpg | Bin .../installfest/img/xcode-tools-install.png | Bin sites/{en => }/installfest/install_xcode.step | 0 .../install_xcode_command_line_tools.step | 0 .../install_xcode_from_app_store.step | 0 .../installfest/install_xcode_from_dvd.step | 0 sites/{en => }/installfest/installfest.step | 0 sites/{en => }/installfest/linux.step | 0 sites/{en => }/installfest/macOS.step | 0 sites/{en => }/installfest/osx_rvm.step | 0 sites/{en => }/installfest/windows.step | 0 .../intro-to-rails/CRUD_with_scaffolding.step | 0 .../intro-to-rails/_consider_deploying.step | 0 .../_consider_deploying_again.step | 0 .../intro-to-rails/_deploying_to_heroku.step | 0 .../_deploying_to_heroku_again.step | 0 .../_switch_to_home_directory.step | 0 .../_working_effectively_and_efficiently.md | 0 .../add_the_project_to_a_git_repo.step | 0 .../intro-to-rails/allow_people_to_vote.step | 0 .../clean_up_links_on_the_topics_list.step | 0 .../intro-to-rails/creating_a_migration.step | 0 .../credits_and_next_steps.step | 0 .../intro-to-rails/deploying_to_heroku.step | 0 .../deploying_to_heroku_again.step | 0 .../intro-to-rails/getting_started.step | 0 sites/{en => }/intro-to-rails/glossary.step | 0 .../hooking_up_votes_and_topics.step | 0 .../img/Seattle_list_with_topic.png | Bin .../img/Seattle_topic_created.png | Bin .../img/Seattle_topic_list_page.png | Bin .../intro-to-rails/img/Start_page.png | Bin .../img/atom_add_folder_to_project.png | Bin .../img/atom_project_as_folder.png | Bin .../intro-to-rails/img/finished_app.png | Bin sites/{en => }/intro-to-rails/img/mvc.png | Bin .../img/rails4_rails_info_routing.png | Bin .../{en => }/intro-to-rails/img/workflow.png | Bin .../intro-to-rails/intro-to-rails.step | 0 .../make_the_topic_title_a_link.step | 0 .../intro-to-rails/rails_architecture.step | 0 ...opics_list_after_creating_a_new_topic.step | 0 .../intro-to-rails/ruby_language.step | 0 .../running_your_application_locally.step | 0 .../setting_the_default_page.step | 0 .../intro-to-rails/voting_on_topics.step | 0 .../img/browser_console.png | Bin .../javascript-snake-game.step | 0 .../js-snake-game-tutorial.zip-manifest | 0 .../javascript-snake-game/js/chunk.js | 0 .../javascript-snake-game/js/lesson-10.js | 0 .../javascript-snake-game/js/lesson-11.js | 0 .../javascript-snake-game/js/lesson-12.js | 0 .../javascript-snake-game/js/lesson-13.js | 0 .../javascript-snake-game/js/lesson-2.js | 0 .../javascript-snake-game/js/lesson-3.js | 0 .../javascript-snake-game/js/lesson-4.js | 0 .../javascript-snake-game/js/lesson-5.js | 0 .../javascript-snake-game/js/lesson-6.js | 0 .../javascript-snake-game/js/lesson-7.js | 0 .../javascript-snake-game/js/lesson-8.js | 0 .../javascript-snake-game/js/lesson-9.js | 0 .../javascript-snake-game/js/snake.js | 0 .../javascript-snake-game/lesson-1.step | 0 .../javascript-snake-game/lesson-10.step | 0 .../javascript-snake-game/lesson-11.step | 0 .../javascript-snake-game/lesson-12.step | 0 .../javascript-snake-game/lesson-13.step | 0 .../javascript-snake-game/lesson-14.step | 0 .../javascript-snake-game/lesson-2.step | 0 .../javascript-snake-game/lesson-3.step | 0 .../javascript-snake-game/lesson-4.step | 0 .../javascript-snake-game/lesson-5.step | 0 .../javascript-snake-game/lesson-6.step | 0 .../javascript-snake-game/lesson-7.step | 0 .../javascript-snake-game/lesson-8.step | 0 .../javascript-snake-game/lesson-9.step | 0 .../zip_content/index.html | 0 .../zip_content/snake.js | 0 .../AdvancedTodoList.zip-manifest | 0 .../adding_an_item.step | 0 ...lding_complex_applications_with_react.step | 0 .../creating_a_list.step | 0 .../deploying_your_site.step | 0 .../developer_tools.step | 0 .../javascript-to-do-list-with-react.step | 0 .../loading_items.step | 0 .../marking_an_item_as_complete.step | 0 .../next_steps.step | 0 .../zip_content/app.js | 0 .../zip_content/console-polyfill.js | 0 .../zip_content/debut_light.png | Bin .../zip_content/index.html | 0 .../zip_content/store.js | 0 .../zip_content/styles.css | 0 .../IntermediateTodoList.zip-manifest | 0 .../_deploying_your_site.md | 0 .../javascript-to-do-list/_lesson_format.md | 0 .../javascript-to-do-list/_teachers_note.md | 0 .../javascript-to-do-list/adding_an_item.step | 0 .../creating_a_list.step | 0 .../deploying_your_site.step | 0 .../developer_tools.step | 0 .../img/browser_console.png | Bin .../img/finished_app.png | Bin .../javascript-to-do-list/img/network_tab.png | Bin .../img/text_editor_html.png | Bin .../javascript-to-do-list.step | 0 .../javascript-to-do-list/loading_items.step | 0 .../marking_an_item_as_complete.step | 0 .../javascript-to-do-list/next_steps.step | 0 .../playing_with_jquery.step | 0 .../programming_with_javascript.step | 0 .../the_basics_of_a_website.step | 0 .../javascript-to-do-list/zip_content/app.js | 0 .../zip_content/debut_light.png | Bin .../zip_content/index.html | 0 .../zip_content/styles.css | 0 sites/{en => }/job-board/add_a_navbar.step | 0 .../job-board/add_a_new_job_form.step | 0 sites/{en => }/job-board/add_more_things.step | 0 .../job-board/create_a_rails_app.step | 0 .../crud_and_resourceful_routing.step | 0 .../job-board/delete_job_listings.step | 0 sites/{en => }/job-board/img/crud_grid.jpg | Bin .../job-board/img/crud_rails_methods.jpg | Bin sites/{en => }/job-board/img/rails-routes.png | Bin .../{en => }/job-board/img/request-cycle.jpg | Bin sites/{en => }/job-board/job-board.step | 0 .../{en => }/job-board/listing_the_jobs.step | 0 .../job-board/make_a_jobs_home_page.step | 0 .../job-board/make_the_form_work.step | 0 .../job-board/store_jobs_in_the_database.step | 0 .../{en => }/job-board/the_request_cycle.step | 0 .../job-board/update_job_listings.step | 0 sites/{en => }/learn-to-code/argv.md | 0 sites/{en => }/learn-to-code/arrays.md | 0 sites/{en => }/learn-to-code/computers.md | 0 sites/{en => }/learn-to-code/extra.md | 0 sites/{en => }/learn-to-code/functions.md | 0 sites/{en => }/learn-to-code/hashes.md | 0 .../learn-to-code/img/cookie-recipe.gif | Bin sites/{en => }/learn-to-code/img/dot.jpg | Bin .../img/fruit-banana-snack-banana.svg | 0 .../learn-to-code/img/one-infinite-loop.jpg | Bin .../learn-to-code/img/snack-apple.svg | 0 .../learn-to-code/img/snack-fruit.svg | 0 sites/{en => }/learn-to-code/img/spoon.jpg | Bin .../{en => }/learn-to-code/img/truthiness.png | Bin .../{en => }/learn-to-code/img/warehouse.jpg | Bin .../learn-to-code/img/wargames-terminal.jpg | Bin .../learn-to-code/input_and_output.md | 0 sites/{en => }/learn-to-code/learn-to-code.md | 0 sites/{en => }/learn-to-code/logic.md | 0 sites/{en => }/learn-to-code/loops.md | 0 sites/{en => }/learn-to-code/methods.md | 0 sites/{en => }/learn-to-code/next_steps.md | 0 sites/{en => }/learn-to-code/nil.md | 0 sites/{en => }/learn-to-code/numbers.md | 0 sites/{en => }/learn-to-code/objects.md | 0 sites/{en => }/learn-to-code/sinatra.md | 0 sites/{en => }/learn-to-code/strings.md | 0 .../learn-to-code/the_command_line.md | 0 .../learn-to-code/todo-learntocode.md | 0 sites/{en => }/learn-to-code/variables.md | 0 .../add_other_features_of_your_choosing.step | 0 ...o_create_and_look_at_individual_posts.step | 0 .../{en => }/message-board/add_replying.step | 0 sites/{en => }/message-board/commands.md | 0 ...new_rails_app_with_a_static_home_page.step | 0 .../creating_a_new_controller.md | 0 .../message-board/img/create_post.png | Bin .../message-board/img/create_reply.png | Bin sites/{en => }/message-board/img/header.png | Bin .../message-board/img/inline_reply.png | Bin .../{en => }/message-board/img/post_index.png | Bin .../message-board/img/request-cycle.jpg | Bin .../{en => }/message-board/img/show_post.png | Bin .../message-board/img/show_replies.png | Bin .../message-board/img/static_home_page.png | Bin .../inline_replying_on_a_post.step | 0 .../message-board/install_devise.step | 0 .../make_a_posts_index_page.step | 0 .../make_it_pretty_with_bootstrap.step | 0 .../{en => }/message-board/message-board.step | 0 sites/{en => }/message-board/mvc_overview.md | 0 .../message-board/the_request_cycle.md | 0 sites/{en => }/ruby/arrays.step | 0 sites/{en => }/ruby/booleans.step | 0 sites/{en => }/ruby/classes.step | 0 sites/{en => }/ruby/command_line.step | 0 sites/{en => }/ruby/conditionals.step | 0 sites/{en => }/ruby/datatypes.step | 0 sites/{en => }/ruby/functions.step | 0 sites/{en => }/ruby/hashes.step | 0 .../{en => }/ruby/how_to_write_a_program.step | 0 sites/{en => }/ruby/input_and_output.step | 0 sites/{en => }/ruby/irb.step | 0 sites/{en => }/ruby/loops.step | 0 sites/{en => }/ruby/nil.step | 0 .../{en => }/ruby/numbers_and_arithmetic.step | 0 .../ruby/overview:_building_blocks.step | 0 sites/{en => }/ruby/overview:_organizing.step | 0 sites/{en => }/ruby/ruby.step | 0 .../ruby/running_programs_from_a_file.step | 0 sites/{en => }/ruby/strings.step | 0 sites/{en => }/ruby/summary:_basics.step | 0 sites/{en => }/ruby/summary:_tools.step | 0 sites/{en => }/ruby/symbols.step | 0 .../{en => }/ruby/using_virtual_machines.step | 0 sites/{en => }/ruby/variables.step | 0 sites/{en => }/ruby/what_is_ruby.step | 0 .../ruby/working_with_collections.step | 0 .../additional_concepts.step | 0 .../final_challenge.step | 0 .../img/rails-test-types.png | Bin .../testing-rails-applications.step | 0 .../testing_frameworks.step | 0 .../types_of_tests.step | 0 .../what_are_tests.step | 0 sites/{en => }/workshop/activities.md | 0 sites/{en => }/workshop/beginners.mw | 0 sites/{en => }/workshop/closing.deck.md | 0 sites/{en => }/workshop/command_prompt.mw | 0 sites/{en => }/workshop/diagrams.mw | 0 .../workshop/foundational_skills.deck.md | 0 sites/{en => }/workshop/helpful_examples.mw | 0 .../workshop/img/Win7_search_programs.jpg | Bin sites/{en => }/workshop/img/acrobat.jpg | Bin sites/{en => }/workshop/img/agile.jpg | Bin sites/{en => }/workshop/img/cheatsheet.png | Bin sites/{en => }/workshop/img/ey_logo_rgb.png | Bin sites/{en => }/workshop/img/firefox.png | Bin sites/{en => }/workshop/img/git.png | Bin sites/{en => }/workshop/img/git_bash.png | Bin sites/{en => }/workshop/img/itunes.png | Bin sites/{en => }/workshop/img/linux_logo.gif | Bin .../{en => }/workshop/img/mac_terminal_sm.png | Bin sites/{en => }/workshop/img/os_x_logo.jpg | Bin sites/{en => }/workshop/img/rails_logo.jpg | Bin .../workshop/img/railsbridge_logo.png | Bin sites/{en => }/workshop/img/ruby-logo.jpg | Bin sites/{en => }/workshop/img/rubygems.png | Bin sites/{en => }/workshop/img/windows_logo.gif | Bin sites/{en => }/workshop/img/wordpress.jpg | Bin .../workshop/more_teacher_training.deck.md | 0 .../more_teacher_training_2016.deck.md | 0 sites/{en => }/workshop/noobie-outline.txt | 0 sites/{en => }/workshop/resources.md | 0 .../workshop/ruby_for_beginners.deck.md | 0 .../workshop/ruby_for_programmers.deck.md | 0 sites/{en => }/workshop/ta_cheat_sheet.md | 0 .../{en => }/workshop/teacher_cheat_sheet.md | 0 sites/{en => }/workshop/teaching_tips.md | 0 sites/{en => }/workshop/topics.md | 0 sites/{en => }/workshop/web_apps.deck.md | 0 sites/{en => }/workshop/welcome.deck.md | 0 sites/{en => }/workshop/workshop.md | 0 sites/zh-tw/nihao/nihao.step | 1 - spec/site_spec.rb | 8 +- 375 files changed, 200 insertions(+), 155 deletions(-) delete mode 100644 locales/en.yml create mode 100644 locales/en/captions.yml create mode 100644 locales/en/general.yml create mode 100644 locales/en/header_sections.yml create mode 100644 locales/en/sites.yml create mode 100644 locales/es/captions.yml create mode 100644 locales/es/general.yml create mode 100644 locales/es/header_sections.yml create mode 100644 locales/es/sites.yml create mode 100644 locales/zh-tw/captions.yml create mode 100644 locales/zh-tw/general.yml create mode 100644 locales/zh-tw/header_section.yml rename sites/{en => }/docs/docs.step (100%) delete mode 100644 sites/es/hola/hola.step rename sites/{en => }/frontend/HTML_attributes.step (100%) rename sites/{en => }/frontend/HTML_structure.step (100%) rename sites/{en => }/frontend/HTML_tags.step (100%) rename sites/{en => }/frontend/_consider_deploying_to_github.step (100%) rename sites/{en => }/frontend/_consider_deploying_to_github_again.step (100%) rename sites/{en => }/frontend/_developer_tools.step (100%) rename sites/{en => }/frontend/_working_effectively_and_efficiently.md (100%) rename sites/{en => }/frontend/add_more_elements.step (100%) rename sites/{en => }/frontend/add_starter_files.step (100%) rename sites/{en => }/frontend/basic_CSS.step (100%) rename sites/{en => }/frontend/basic_javascript.step (100%) rename sites/{en => }/frontend/deploying_to_github.step (100%) rename sites/{en => }/frontend/deploying_to_github_again.step (100%) rename sites/{en => }/frontend/developer_tools.step (100%) rename sites/{en => }/frontend/front-end-lesson.zip-manifest (100%) rename sites/{en => }/frontend/frontend.step (100%) rename sites/{en => }/frontend/get_a_sticker.step (100%) rename sites/{en => }/frontend/grid.html (100%) rename sites/{en => }/frontend/griding_with_bootstrap.step (100%) rename sites/{en => }/frontend/html_quick_reference.md (100%) rename sites/{en => }/frontend/img/boxmodel.png (100%) rename sites/{en => }/frontend/img/css.png (100%) rename sites/{en => }/frontend/img/css_bundler.png (100%) rename sites/{en => }/frontend/img/css_class.png (100%) rename sites/{en => }/frontend/img/css_id.png (100%) rename sites/{en => }/frontend/img/css_zen.png (100%) rename sites/{en => }/frontend/img/devtools.png (100%) rename sites/{en => }/frontend/img/devtools_console.png (100%) rename sites/{en => }/frontend/img/devtools_elements.png (100%) rename sites/{en => }/frontend/img/devtools_network.png (100%) rename sites/{en => }/frontend/img/devtools_script.png (100%) rename sites/{en => }/frontend/img/get_a_sticker_fork_button.png (100%) rename sites/{en => }/frontend/img/get_a_sticker_https.png (100%) rename sites/{en => }/frontend/img/get_a_sticker_output.png (100%) rename sites/{en => }/frontend/img/github_create_repo.png (100%) rename sites/{en => }/frontend/img/github_name_your_repo.png (100%) rename sites/{en => }/frontend/img/hello_html.png (100%) rename sites/{en => }/frontend/img/hello_omg.png (100%) rename sites/{en => }/frontend/img/hello_structure.png (100%) rename sites/{en => }/frontend/img/hello_style.png (100%) rename sites/{en => }/frontend/img/hello_title.png (100%) rename sites/{en => }/frontend/img/hello_world.png (100%) rename sites/{en => }/frontend/img/hello_world_2line.png (100%) rename sites/{en => }/frontend/img/hello_world_2line2.png (100%) rename sites/{en => }/frontend/img/hello_world_jazzy.png (100%) rename sites/{en => }/frontend/img/html_tags_list.png (100%) rename sites/{en => }/frontend/img/jquery_result.png (100%) rename sites/{en => }/frontend/img/page.png (100%) rename sites/{en => }/frontend/img/page_anchors.png (100%) rename sites/{en => }/frontend/img/page_html.png (100%) rename sites/{en => }/frontend/img/page_img.png (100%) rename sites/{en => }/frontend/img/page_sample.jpg (100%) rename sites/{en => }/frontend/img/prompt.png (100%) rename sites/{en => }/frontend/img/zip.png (100%) rename sites/{en => }/frontend/introduction_to_html.step (100%) rename sites/{en => }/frontend/jquery.step (100%) rename sites/{en => }/frontend/jquery_vs_javascript.step (100%) rename sites/{en => }/frontend/make_a_web_page.step (100%) rename sites/{en => }/frontend/make_columns.step (100%) rename sites/{en => }/frontend/resources.step (100%) rename sites/{en => }/frontend/tool_installation.step (100%) rename sites/{en => }/frontend/zip_content/.gitignore (100%) rename sites/{en => }/frontend/zip_content/index.html (100%) rename sites/{en => }/frontend/zip_content/resources/javascript.js (100%) rename sites/{en => }/frontend/zip_content/resources/layout.css (100%) rename sites/{en => }/frontend/zip_content/resources/picture.jpg (100%) rename sites/{en => }/installfest/_command-line-glossary.md (100%) rename sites/{en => }/installfest/_general-glossary.md (100%) rename sites/{en => }/installfest/_install_atom_for_mac.step (100%) rename sites/{en => }/installfest/_install_homebrew.step (100%) rename sites/{en => }/installfest/_install_ruby.step (100%) rename sites/{en => }/installfest/_install_rvm.step (100%) rename sites/{en => }/installfest/_install_textmate.step (100%) rename sites/{en => }/installfest/_ruby-and-rails-glossary.md (100%) rename sites/{en => }/installfest/_switch_to_home_directory.step (100%) rename sites/{en => }/installfest/choose_your_operating_system.step (100%) rename sites/{en => }/installfest/clean_up.step (100%) rename sites/{en => }/installfest/configure_git.step (100%) rename sites/{en => }/installfest/create_a_github_account.step (100%) rename sites/{en => }/installfest/create_a_heroku_account.step (100%) rename sites/{en => }/installfest/create_a_rails_app.step (100%) rename sites/{en => }/installfest/create_an_ssh_key.step (100%) rename sites/{en => }/installfest/deploy_a_rails_app.step (100%) rename sites/{en => }/installfest/editors.step (100%) rename sites/{en => }/installfest/get_a_sticker.step (100%) rename sites/{en => }/installfest/glossary.step (100%) rename sites/{en => }/installfest/img/AboutThisMac.png (100%) rename sites/{en => }/installfest/img/WinRailsInstaller.jpg (100%) rename sites/{en => }/installfest/img/appstore.jpg (100%) rename sites/{en => }/installfest/img/directory.png (100%) rename sites/{en => }/installfest/img/get_a_sticker_you_should_see.png (100%) rename sites/{en => }/installfest/img/install_atom_mac.gif (100%) rename sites/{en => }/installfest/img/railsbridge_ubuntu12-checkbox.png (100%) rename sites/{en => }/installfest/img/railsbridge_windowsScreenshot-commandprompt-pinnedtotaskbar.png (100%) rename sites/{en => }/installfest/img/railsbridge_windowsScreenshot-commandprompt_ror.png (100%) rename sites/{en => }/installfest/img/railsbridge_windows_findingCommandPrompt_win7.png (100%) rename sites/{en => }/installfest/img/railsbridge_windows_findingCommandPrompt_win8.png (100%) rename sites/{en => }/installfest/img/successful_rails_install.png (100%) rename sites/{en => }/installfest/img/xcode-prefs.jpg (100%) rename sites/{en => }/installfest/img/xcode-tools-install.png (100%) rename sites/{en => }/installfest/install_xcode.step (100%) rename sites/{en => }/installfest/install_xcode_command_line_tools.step (100%) rename sites/{en => }/installfest/install_xcode_from_app_store.step (100%) rename sites/{en => }/installfest/install_xcode_from_dvd.step (100%) rename sites/{en => }/installfest/installfest.step (100%) rename sites/{en => }/installfest/linux.step (100%) rename sites/{en => }/installfest/macOS.step (100%) rename sites/{en => }/installfest/osx_rvm.step (100%) rename sites/{en => }/installfest/windows.step (100%) rename sites/{en => }/intro-to-rails/CRUD_with_scaffolding.step (100%) rename sites/{en => }/intro-to-rails/_consider_deploying.step (100%) rename sites/{en => }/intro-to-rails/_consider_deploying_again.step (100%) rename sites/{en => }/intro-to-rails/_deploying_to_heroku.step (100%) rename sites/{en => }/intro-to-rails/_deploying_to_heroku_again.step (100%) rename sites/{en => }/intro-to-rails/_switch_to_home_directory.step (100%) rename sites/{en => }/intro-to-rails/_working_effectively_and_efficiently.md (100%) rename sites/{en => }/intro-to-rails/add_the_project_to_a_git_repo.step (100%) rename sites/{en => }/intro-to-rails/allow_people_to_vote.step (100%) rename sites/{en => }/intro-to-rails/clean_up_links_on_the_topics_list.step (100%) rename sites/{en => }/intro-to-rails/creating_a_migration.step (100%) rename sites/{en => }/intro-to-rails/credits_and_next_steps.step (100%) rename sites/{en => }/intro-to-rails/deploying_to_heroku.step (100%) rename sites/{en => }/intro-to-rails/deploying_to_heroku_again.step (100%) rename sites/{en => }/intro-to-rails/getting_started.step (100%) rename sites/{en => }/intro-to-rails/glossary.step (100%) rename sites/{en => }/intro-to-rails/hooking_up_votes_and_topics.step (100%) rename sites/{en => }/intro-to-rails/img/Seattle_list_with_topic.png (100%) rename sites/{en => }/intro-to-rails/img/Seattle_topic_created.png (100%) rename sites/{en => }/intro-to-rails/img/Seattle_topic_list_page.png (100%) rename sites/{en => }/intro-to-rails/img/Start_page.png (100%) rename sites/{en => }/intro-to-rails/img/atom_add_folder_to_project.png (100%) rename sites/{en => }/intro-to-rails/img/atom_project_as_folder.png (100%) rename sites/{en => }/intro-to-rails/img/finished_app.png (100%) rename sites/{en => }/intro-to-rails/img/mvc.png (100%) rename sites/{en => }/intro-to-rails/img/rails4_rails_info_routing.png (100%) rename sites/{en => }/intro-to-rails/img/workflow.png (100%) rename sites/{en => }/intro-to-rails/intro-to-rails.step (100%) rename sites/{en => }/intro-to-rails/make_the_topic_title_a_link.step (100%) rename sites/{en => }/intro-to-rails/rails_architecture.step (100%) rename sites/{en => }/intro-to-rails/redirect_to_the_topics_list_after_creating_a_new_topic.step (100%) rename sites/{en => }/intro-to-rails/ruby_language.step (100%) rename sites/{en => }/intro-to-rails/running_your_application_locally.step (100%) rename sites/{en => }/intro-to-rails/setting_the_default_page.step (100%) rename sites/{en => }/intro-to-rails/voting_on_topics.step (100%) rename sites/{en => }/javascript-snake-game/img/browser_console.png (100%) rename sites/{en => }/javascript-snake-game/javascript-snake-game.step (100%) rename sites/{en => }/javascript-snake-game/js-snake-game-tutorial.zip-manifest (100%) rename sites/{en => }/javascript-snake-game/js/chunk.js (100%) rename sites/{en => }/javascript-snake-game/js/lesson-10.js (100%) rename sites/{en => }/javascript-snake-game/js/lesson-11.js (100%) rename sites/{en => }/javascript-snake-game/js/lesson-12.js (100%) rename sites/{en => }/javascript-snake-game/js/lesson-13.js (100%) rename sites/{en => }/javascript-snake-game/js/lesson-2.js (100%) rename sites/{en => }/javascript-snake-game/js/lesson-3.js (100%) rename sites/{en => }/javascript-snake-game/js/lesson-4.js (100%) rename sites/{en => }/javascript-snake-game/js/lesson-5.js (100%) rename sites/{en => }/javascript-snake-game/js/lesson-6.js (100%) rename sites/{en => }/javascript-snake-game/js/lesson-7.js (100%) rename sites/{en => }/javascript-snake-game/js/lesson-8.js (100%) rename sites/{en => }/javascript-snake-game/js/lesson-9.js (100%) rename sites/{en => }/javascript-snake-game/js/snake.js (100%) rename sites/{en => }/javascript-snake-game/lesson-1.step (100%) rename sites/{en => }/javascript-snake-game/lesson-10.step (100%) rename sites/{en => }/javascript-snake-game/lesson-11.step (100%) rename sites/{en => }/javascript-snake-game/lesson-12.step (100%) rename sites/{en => }/javascript-snake-game/lesson-13.step (100%) rename sites/{en => }/javascript-snake-game/lesson-14.step (100%) rename sites/{en => }/javascript-snake-game/lesson-2.step (100%) rename sites/{en => }/javascript-snake-game/lesson-3.step (100%) rename sites/{en => }/javascript-snake-game/lesson-4.step (100%) rename sites/{en => }/javascript-snake-game/lesson-5.step (100%) rename sites/{en => }/javascript-snake-game/lesson-6.step (100%) rename sites/{en => }/javascript-snake-game/lesson-7.step (100%) rename sites/{en => }/javascript-snake-game/lesson-8.step (100%) rename sites/{en => }/javascript-snake-game/lesson-9.step (100%) rename sites/{en => }/javascript-snake-game/zip_content/index.html (100%) rename sites/{en => }/javascript-snake-game/zip_content/snake.js (100%) rename sites/{en => }/javascript-to-do-list-with-react/AdvancedTodoList.zip-manifest (100%) rename sites/{en => }/javascript-to-do-list-with-react/adding_an_item.step (100%) rename sites/{en => }/javascript-to-do-list-with-react/building_complex_applications_with_react.step (100%) rename sites/{en => }/javascript-to-do-list-with-react/creating_a_list.step (100%) rename sites/{en => }/javascript-to-do-list-with-react/deploying_your_site.step (100%) rename sites/{en => }/javascript-to-do-list-with-react/developer_tools.step (100%) rename sites/{en => }/javascript-to-do-list-with-react/javascript-to-do-list-with-react.step (100%) rename sites/{en => }/javascript-to-do-list-with-react/loading_items.step (100%) rename sites/{en => }/javascript-to-do-list-with-react/marking_an_item_as_complete.step (100%) rename sites/{en => }/javascript-to-do-list-with-react/next_steps.step (100%) rename sites/{en => }/javascript-to-do-list-with-react/zip_content/app.js (100%) rename sites/{en => }/javascript-to-do-list-with-react/zip_content/console-polyfill.js (100%) rename sites/{en => }/javascript-to-do-list-with-react/zip_content/debut_light.png (100%) rename sites/{en => }/javascript-to-do-list-with-react/zip_content/index.html (100%) rename sites/{en => }/javascript-to-do-list-with-react/zip_content/store.js (100%) rename sites/{en => }/javascript-to-do-list-with-react/zip_content/styles.css (100%) rename sites/{en => }/javascript-to-do-list/IntermediateTodoList.zip-manifest (100%) rename sites/{en => }/javascript-to-do-list/_deploying_your_site.md (100%) rename sites/{en => }/javascript-to-do-list/_lesson_format.md (100%) rename sites/{en => }/javascript-to-do-list/_teachers_note.md (100%) rename sites/{en => }/javascript-to-do-list/adding_an_item.step (100%) rename sites/{en => }/javascript-to-do-list/creating_a_list.step (100%) rename sites/{en => }/javascript-to-do-list/deploying_your_site.step (100%) rename sites/{en => }/javascript-to-do-list/developer_tools.step (100%) rename sites/{en => }/javascript-to-do-list/img/browser_console.png (100%) rename sites/{en => }/javascript-to-do-list/img/finished_app.png (100%) rename sites/{en => }/javascript-to-do-list/img/network_tab.png (100%) rename sites/{en => }/javascript-to-do-list/img/text_editor_html.png (100%) rename sites/{en => }/javascript-to-do-list/javascript-to-do-list.step (100%) rename sites/{en => }/javascript-to-do-list/loading_items.step (100%) rename sites/{en => }/javascript-to-do-list/marking_an_item_as_complete.step (100%) rename sites/{en => }/javascript-to-do-list/next_steps.step (100%) rename sites/{en => }/javascript-to-do-list/playing_with_jquery.step (100%) rename sites/{en => }/javascript-to-do-list/programming_with_javascript.step (100%) rename sites/{en => }/javascript-to-do-list/the_basics_of_a_website.step (100%) rename sites/{en => }/javascript-to-do-list/zip_content/app.js (100%) rename sites/{en => }/javascript-to-do-list/zip_content/debut_light.png (100%) rename sites/{en => }/javascript-to-do-list/zip_content/index.html (100%) rename sites/{en => }/javascript-to-do-list/zip_content/styles.css (100%) rename sites/{en => }/job-board/add_a_navbar.step (100%) rename sites/{en => }/job-board/add_a_new_job_form.step (100%) rename sites/{en => }/job-board/add_more_things.step (100%) rename sites/{en => }/job-board/create_a_rails_app.step (100%) rename sites/{en => }/job-board/crud_and_resourceful_routing.step (100%) rename sites/{en => }/job-board/delete_job_listings.step (100%) rename sites/{en => }/job-board/img/crud_grid.jpg (100%) rename sites/{en => }/job-board/img/crud_rails_methods.jpg (100%) rename sites/{en => }/job-board/img/rails-routes.png (100%) rename sites/{en => }/job-board/img/request-cycle.jpg (100%) rename sites/{en => }/job-board/job-board.step (100%) rename sites/{en => }/job-board/listing_the_jobs.step (100%) rename sites/{en => }/job-board/make_a_jobs_home_page.step (100%) rename sites/{en => }/job-board/make_the_form_work.step (100%) rename sites/{en => }/job-board/store_jobs_in_the_database.step (100%) rename sites/{en => }/job-board/the_request_cycle.step (100%) rename sites/{en => }/job-board/update_job_listings.step (100%) rename sites/{en => }/learn-to-code/argv.md (100%) rename sites/{en => }/learn-to-code/arrays.md (100%) rename sites/{en => }/learn-to-code/computers.md (100%) rename sites/{en => }/learn-to-code/extra.md (100%) rename sites/{en => }/learn-to-code/functions.md (100%) rename sites/{en => }/learn-to-code/hashes.md (100%) rename sites/{en => }/learn-to-code/img/cookie-recipe.gif (100%) rename sites/{en => }/learn-to-code/img/dot.jpg (100%) rename sites/{en => }/learn-to-code/img/fruit-banana-snack-banana.svg (100%) rename sites/{en => }/learn-to-code/img/one-infinite-loop.jpg (100%) rename sites/{en => }/learn-to-code/img/snack-apple.svg (100%) rename sites/{en => }/learn-to-code/img/snack-fruit.svg (100%) rename sites/{en => }/learn-to-code/img/spoon.jpg (100%) rename sites/{en => }/learn-to-code/img/truthiness.png (100%) rename sites/{en => }/learn-to-code/img/warehouse.jpg (100%) rename sites/{en => }/learn-to-code/img/wargames-terminal.jpg (100%) rename sites/{en => }/learn-to-code/input_and_output.md (100%) rename sites/{en => }/learn-to-code/learn-to-code.md (100%) rename sites/{en => }/learn-to-code/logic.md (100%) rename sites/{en => }/learn-to-code/loops.md (100%) rename sites/{en => }/learn-to-code/methods.md (100%) rename sites/{en => }/learn-to-code/next_steps.md (100%) rename sites/{en => }/learn-to-code/nil.md (100%) rename sites/{en => }/learn-to-code/numbers.md (100%) rename sites/{en => }/learn-to-code/objects.md (100%) rename sites/{en => }/learn-to-code/sinatra.md (100%) rename sites/{en => }/learn-to-code/strings.md (100%) rename sites/{en => }/learn-to-code/the_command_line.md (100%) rename sites/{en => }/learn-to-code/todo-learntocode.md (100%) rename sites/{en => }/learn-to-code/variables.md (100%) rename sites/{en => }/message-board/add_other_features_of_your_choosing.step (100%) rename sites/{en => }/message-board/add_pages_to_create_and_look_at_individual_posts.step (100%) rename sites/{en => }/message-board/add_replying.step (100%) rename sites/{en => }/message-board/commands.md (100%) rename sites/{en => }/message-board/create_a_new_rails_app_with_a_static_home_page.step (100%) rename sites/{en => }/message-board/creating_a_new_controller.md (100%) rename sites/{en => }/message-board/img/create_post.png (100%) rename sites/{en => }/message-board/img/create_reply.png (100%) rename sites/{en => }/message-board/img/header.png (100%) rename sites/{en => }/message-board/img/inline_reply.png (100%) rename sites/{en => }/message-board/img/post_index.png (100%) rename sites/{en => }/message-board/img/request-cycle.jpg (100%) rename sites/{en => }/message-board/img/show_post.png (100%) rename sites/{en => }/message-board/img/show_replies.png (100%) rename sites/{en => }/message-board/img/static_home_page.png (100%) rename sites/{en => }/message-board/inline_replying_on_a_post.step (100%) rename sites/{en => }/message-board/install_devise.step (100%) rename sites/{en => }/message-board/make_a_posts_index_page.step (100%) rename sites/{en => }/message-board/make_it_pretty_with_bootstrap.step (100%) rename sites/{en => }/message-board/message-board.step (100%) rename sites/{en => }/message-board/mvc_overview.md (100%) rename sites/{en => }/message-board/the_request_cycle.md (100%) rename sites/{en => }/ruby/arrays.step (100%) rename sites/{en => }/ruby/booleans.step (100%) rename sites/{en => }/ruby/classes.step (100%) rename sites/{en => }/ruby/command_line.step (100%) rename sites/{en => }/ruby/conditionals.step (100%) rename sites/{en => }/ruby/datatypes.step (100%) rename sites/{en => }/ruby/functions.step (100%) rename sites/{en => }/ruby/hashes.step (100%) rename sites/{en => }/ruby/how_to_write_a_program.step (100%) rename sites/{en => }/ruby/input_and_output.step (100%) rename sites/{en => }/ruby/irb.step (100%) rename sites/{en => }/ruby/loops.step (100%) rename sites/{en => }/ruby/nil.step (100%) rename sites/{en => }/ruby/numbers_and_arithmetic.step (100%) rename sites/{en => }/ruby/overview:_building_blocks.step (100%) rename sites/{en => }/ruby/overview:_organizing.step (100%) rename sites/{en => }/ruby/ruby.step (100%) rename sites/{en => }/ruby/running_programs_from_a_file.step (100%) rename sites/{en => }/ruby/strings.step (100%) rename sites/{en => }/ruby/summary:_basics.step (100%) rename sites/{en => }/ruby/summary:_tools.step (100%) rename sites/{en => }/ruby/symbols.step (100%) rename sites/{en => }/ruby/using_virtual_machines.step (100%) rename sites/{en => }/ruby/variables.step (100%) rename sites/{en => }/ruby/what_is_ruby.step (100%) rename sites/{en => }/ruby/working_with_collections.step (100%) rename sites/{en => }/testing-rails-applications/additional_concepts.step (100%) rename sites/{en => }/testing-rails-applications/final_challenge.step (100%) rename sites/{en => }/testing-rails-applications/img/rails-test-types.png (100%) rename sites/{en => }/testing-rails-applications/testing-rails-applications.step (100%) rename sites/{en => }/testing-rails-applications/testing_frameworks.step (100%) rename sites/{en => }/testing-rails-applications/types_of_tests.step (100%) rename sites/{en => }/testing-rails-applications/what_are_tests.step (100%) rename sites/{en => }/workshop/activities.md (100%) rename sites/{en => }/workshop/beginners.mw (100%) rename sites/{en => }/workshop/closing.deck.md (100%) rename sites/{en => }/workshop/command_prompt.mw (100%) rename sites/{en => }/workshop/diagrams.mw (100%) rename sites/{en => }/workshop/foundational_skills.deck.md (100%) rename sites/{en => }/workshop/helpful_examples.mw (100%) rename sites/{en => }/workshop/img/Win7_search_programs.jpg (100%) rename sites/{en => }/workshop/img/acrobat.jpg (100%) rename sites/{en => }/workshop/img/agile.jpg (100%) rename sites/{en => }/workshop/img/cheatsheet.png (100%) rename sites/{en => }/workshop/img/ey_logo_rgb.png (100%) rename sites/{en => }/workshop/img/firefox.png (100%) rename sites/{en => }/workshop/img/git.png (100%) rename sites/{en => }/workshop/img/git_bash.png (100%) rename sites/{en => }/workshop/img/itunes.png (100%) rename sites/{en => }/workshop/img/linux_logo.gif (100%) rename sites/{en => }/workshop/img/mac_terminal_sm.png (100%) rename sites/{en => }/workshop/img/os_x_logo.jpg (100%) rename sites/{en => }/workshop/img/rails_logo.jpg (100%) rename sites/{en => }/workshop/img/railsbridge_logo.png (100%) rename sites/{en => }/workshop/img/ruby-logo.jpg (100%) rename sites/{en => }/workshop/img/rubygems.png (100%) rename sites/{en => }/workshop/img/windows_logo.gif (100%) rename sites/{en => }/workshop/img/wordpress.jpg (100%) rename sites/{en => }/workshop/more_teacher_training.deck.md (100%) rename sites/{en => }/workshop/more_teacher_training_2016.deck.md (100%) rename sites/{en => }/workshop/noobie-outline.txt (100%) rename sites/{en => }/workshop/resources.md (100%) rename sites/{en => }/workshop/ruby_for_beginners.deck.md (100%) rename sites/{en => }/workshop/ruby_for_programmers.deck.md (100%) rename sites/{en => }/workshop/ta_cheat_sheet.md (100%) rename sites/{en => }/workshop/teacher_cheat_sheet.md (100%) rename sites/{en => }/workshop/teaching_tips.md (100%) rename sites/{en => }/workshop/topics.md (100%) rename sites/{en => }/workshop/web_apps.deck.md (100%) rename sites/{en => }/workshop/welcome.deck.md (100%) rename sites/{en => }/workshop/workshop.md (100%) delete mode 100644 sites/zh-tw/nihao/nihao.step diff --git a/app.rb b/app.rb index fdb12c9dc..bce4ace91 100755 --- a/app.rb +++ b/app.rb @@ -9,45 +9,42 @@ require 'zip' require 'tmpdir' -here = File.expand_path File.dirname(__FILE__) +here = __dir__ lib = File.expand_path "#{here}/lib" $: << lib -require "doc_page" -require "step_page" -require "markdown_page" -require "media_wiki_page" -require "raw_page" -require "deck" -require "deck/rack_app" -require "titleizer" -require "site" +require 'doc_page' +require 'step_page' +require 'markdown_page' +require 'media_wiki_page' +require 'raw_page' +require 'deck' +require 'deck/rack_app' +require 'titleizer' +require 'site' require 'sprockets' require 'jquery-cdn' -class InstallFest < Sinatra::Application # todo: use Sinatra::Base instead, with more explicit config +class InstallFest < Sinatra::Application + # TODO: use Sinatra::Base instead, with more explicit config include Erector::Mixin - DEFAULT_SITES = {en: "docs", es: "hola", :"zh-tw" => "nihao" } - # Set available locales in Array of Strings; this is also used when # checking availability in dynamic locale assignment, they must be strings. - AVAILABLE_LOCALES = DEFAULT_SITES.keys.map(&:to_s) + AVAILABLE_LOCALES = %i[en es zh-tw].freeze set :assets, Sprockets::Environment.new - settings.assets.append_path "assets/stylesheets" - settings.assets.append_path "assets/javascripts" - settings.assets.append_path "public/fonts" + settings.assets.append_path 'assets/stylesheets' + settings.assets.append_path 'assets/javascripts' + settings.assets.append_path 'public/fonts' settings.assets.append_path Bootstrap.javascripts_path JqueryCdn.install(settings.assets) - if settings.environment == :development - set :cookie_options, domain: nil - end + set :cookie_options, domain: nil if settings.environment == :development configure do I18n::Backend::Simple.include(I18n::Backend::Fallbacks) - I18n.load_path = Dir[File.join(settings.root, 'locales', '*.yml')] + I18n.load_path = Dir[File.join(settings.root, 'locales', '**/*.yml')] I18n.backend.load_translations I18n.available_locales = AVAILABLE_LOCALES @@ -57,28 +54,28 @@ class InstallFest < Sinatra::Application # todo: use Sinatra::Base instead, wi def initialize super - @here = File.expand_path(File.dirname(__FILE__)) + @here = __dir__ end attr_reader :here attr_writer :default_site - # todo: test + # TODO: test # returns the most-specific hostname component, e.g. "foo" for "foo.example.com" def subdomain - host.split(".").first + host.split('.').first end def default_site if host && sites.include?(site = subdomain) site else - DEFAULT_SITES[I18n.locale.to_sym] # no symbol DoS because it's whitelisted + 'docs' end end def host - request && request.host + request&.host end def site_dir @@ -86,7 +83,7 @@ def site_dir end def sites_dir - Site.sites_dir(I18n.locale) + Site.sites_dir end def sites @@ -107,24 +104,20 @@ def redirect_pages end before do - begin - I18n.locale = dynamic_locale - rescue I18n::InvalidLocale - I18n.locale = I18n.default_locale - end + I18n.locale = dynamic_locale + rescue I18n::InvalidLocale + I18n.locale = I18n.default_locale end after '/:site/*' do # Any real page (starts with a site and doesn't end with an extension) # gets saved as the 'back' for the next pageload. - if sites.include?(params[:site]) && !request.fullpath.match(/\..+\z/) - cookies[:docs_back_path] = request.fullpath - end + cookies[:docs_back_path] = request.fullpath if sites.include?(params[:site]) && !request.fullpath.match(/\..+\z/) end def dynamic_locale - (params && (params[:locale] or params[:l])) or - (host && AVAILABLE_LOCALES.include?(subdomain) && subdomain) or + (params && (params[:locale] || params[:l])) || + (host && AVAILABLE_LOCALES.include?(subdomain) && subdomain) || (ENV['SITE_LOCALE']) end @@ -133,7 +126,7 @@ def src end def ext - $1 if doc_path.match(/\.(.*)/) + Regexp.last_match(1) if doc_path.match(/\.(.*)/) end def doc_path @@ -162,48 +155,46 @@ def back_path end def render_page - begin - options = { - site: Site.named(params[:site], I18n.locale), - page_name: params[:name], - doc_title: Titleizer.title_for_page(params[:name]), - doc_path: doc_path, - back: back_path, - src: src, - locale: I18n.locale, - } + options = { + site: Site.named(params[:site]), + page_name: params[:name], + doc_title: Titleizer.title_for_page(params[:name]), + doc_path: doc_path, + back: back_path, + src: src, + locale: I18n.locale + } - case ext + case ext - when "deck.md", "deck" - render_deck + when 'deck.md', 'deck' + render_deck - when "md" - MarkdownPage.new(options).to_html + when 'md' + MarkdownPage.new(options).to_html - when "mw" - MediaWikiPage.new(options).to_html + when 'mw' + MediaWikiPage.new(options).to_html - when "step" - StepPage.new(options).to_html + when 'step' + StepPage.new(options).to_html - else - raise "unknown file type #{doc_path}" - end + else + raise "unknown file type #{doc_path}" + end + rescue Errno::ENOENT => e + p e + e.backtrace.each do |line| + break if line =~ %r{sinatra/base.rb} - rescue Errno::ENOENT => e - p e - e.backtrace.each do |line| - break if line =~ /sinatra\/base.rb/ - puts "\t"+line - end - halt 404 + puts "\t" + line end + halt 404 end def render_deck slides = Deck::Slide.split(src) - Deck::SlideDeck.new(:slides => slides).to_pretty + Deck::SlideDeck.new(slides: slides).to_pretty end before do @@ -214,7 +205,7 @@ def render_deck halt 404 end - get "/assets/:file.:ext" do + get '/assets/:file.:ext' do mime_type = { 'js' => 'application/javascript', 'css' => 'text/css', @@ -230,29 +221,27 @@ def render_deck send_file font_path end - get "/" do + get '/' do redirect "/#{default_site}/" end - get "/:site/:name/src" do - begin - RawPage.new( - site: Site.named(params[:site], I18n.locale), - page_name: params[:name], - doc_title: File.basename(doc_path), - doc_path: doc_path, - src: src, - locale: I18n.locale, - ).to_html - rescue Errno::ENOENT => e - p e - halt 404 - end + get '/:site/:name/src' do + RawPage.new( + site: Site.named(params[:site], I18n.locale), + page_name: params[:name], + doc_title: File.basename(doc_path), + doc_path: doc_path, + src: src, + locale: I18n.locale + ).to_html + rescue Errno::ENOENT => e + p e + halt 404 end - get "/:site/:name.zip" do + get '/:site/:name.zip' do manifest_path = "#{site_dir}/#{params[:name]}.zip-manifest" - if File.exists?(manifest_path) + if File.exist?(manifest_path) manifest_files = File.read(manifest_path).split("\n") zip_path = File.join(Dir.tmpdir, "#{params[:name]}.zip") FileUtils.rm_rf(zip_path) @@ -268,9 +257,9 @@ def render_deck end end - get "/:site/:name.:ext" do + get '/:site/:name.:ext' do if sites.include?(params[:site]) - if params[:ext] == "deck" # to show a markdown page as slides, change the ".md" to ".deck" + if params[:ext] == 'deck' # to show a markdown page as slides, change the ".md" to ".deck" render_deck else send_file "#{site_dir}/#{params[:name]}.#{params[:ext]}" @@ -278,18 +267,16 @@ def render_deck end end - get "/:site/:subdir/:name.:ext" do - if sites.include?(params[:site]) - send_file "#{site_dir}/#{params[:subdir]}/#{params[:name]}.#{params[:ext]}" - end + get '/:site/:subdir/:name.:ext' do + send_file "#{site_dir}/#{params[:subdir]}/#{params[:name]}.#{params[:ext]}" if sites.include?(params[:site]) end - get "/:site/:name/" do + get '/:site/:name/' do # remove any extraneous slash from otherwise well-formed page URLs redirect request.fullpath.chomp('/') end - get "/:site/:name" do + get '/:site/:name' do site_name = params[:site] if redirect_sites[site_name] redirect "#{redirect_sites[site_name]}/#{params[:name]}" @@ -304,22 +291,22 @@ def render_deck end end - get "/:site/:name/:section/" do + get '/:site/:name/:section/' do # remove any extraneous slash from otherwise well-formed page URLs redirect request.fullpath.chomp('/') end - get "/:site/:name/:section" do + get '/:site/:name/:section' do render_page end - get "/:site" do + get '/:site' do # add a slash to any URLs that contain only a site # (otherwise paths in that site's pages would resolve relative to the root) redirect "#{request.fullpath}/" end - get "/:site/" do + get '/:site/' do site_name = params[:site] if redirect_sites[site_name] redirect "#{redirect_sites[site_name]}/" diff --git a/lib/site.rb b/lib/site.rb index b8fc9b583..e40b0fbce 100644 --- a/lib/site.rb +++ b/lib/site.rb @@ -1,27 +1,27 @@ class Site - DOC_TYPES = %w{step md deck.md mw} + DOC_TYPES = %w[step md deck.md mw].freeze - @@here = File.expand_path(File.dirname(__FILE__)) + @@here = __dir__ @@project_root = File.dirname(@@here) - def self.sites_dir locale = "en" - sites_dir = File.join(["sites", locale.to_s].compact) - File.expand_path(sites_dir, @@project_root) + def self.sites_dir + File.expand_path('sites', @@project_root) end - def self.all locale = "en" - Dir[File.join(sites_dir(locale), '*')].map{|dir| Site.new(dir)} + def self.all + Dir[File.join(sites_dir, '*')].map { |dir| Site.new(dir) } end - def self.named name, locale = "en" - site = all(locale).detect { |site| site.name == name } - raise "No site found with the name '#{name}' in locale '#{locale}'" unless site + def self.named(name) + site = all.detect { |folder| folder.name == name } + raise "No site found with the name '#{name}'" unless site + site end attr_reader :dir - def initialize dir + def initialize(dir) @dir = dir end @@ -31,13 +31,13 @@ def name def docs file_path_glob = File.join(@dir, "*.{#{DOC_TYPES.join(',')}}") - Dir[file_path_glob].map{|path| Doc.new(path)} + Dir[file_path_glob].map { |path| Doc.new(path) } end class Doc attr_reader :path - def initialize path + def initialize(path) @path = path end @@ -48,6 +48,5 @@ def filename def name filename.split('.').first end - end end diff --git a/lib/site_index.rb b/lib/site_index.rb index 3aa360eb2..cfca58976 100644 --- a/lib/site_index.rb +++ b/lib/site_index.rb @@ -28,7 +28,7 @@ def categorized_sites def sites return @sites if @sites - @sites = Dir.glob("#{Site.sites_dir(@locale)}/**").map { |filename| File.basename(filename) }.sort + @sites = Dir.glob("#{Site.sites_dir}/**").map { |filename| File.basename(filename) }.sort end def site_category category diff --git a/locales/en.yml b/locales/en.yml deleted file mode 100644 index b00896c93..000000000 --- a/locales/en.yml +++ /dev/null @@ -1,34 +0,0 @@ -en: - captions: - terminal: "Type this in the terminal:" - irb: "Type this in irb:" - result: "Expected result:" - fuzzy_result: "Approximate expected result:" - link: "Go on to" - - general: - type_in_file: "Type this in the file %{filename}:" - further_reading: "Further Reading" - fuzzy_hint: "The greyed-out text may differ and is not important." - step_title: "Step %{num}" - step_title_suffix: ": " - next_step: "Next Step:" - option: "Option %{num}: " - verify: "Verify %{text}" - goals: "Goals" - expand_all: "Expand All" - other_pages: "Other Pages" - back_to: "Back to" - - header_section: - steps: "Steps" - explanation: "Explanation" - overview: "Overview" - discussion: "Discussion Items" - hints: "Hints" - challenge: "Challenge(s)" - tools_and_references: "Tools and References" - requirements: "Requirements to advance" - - sites: - other_categories: Other Stuff \ No newline at end of file diff --git a/locales/en/captions.yml b/locales/en/captions.yml new file mode 100644 index 000000000..4903b86a7 --- /dev/null +++ b/locales/en/captions.yml @@ -0,0 +1,7 @@ +en: + captions: + terminal: "Type this in the terminal:" + irb: "Type this in irb:" + result: "Expected result:" + fuzzy_result: "Approximate expected result:" + link: "Go on to" diff --git a/locales/en/general.yml b/locales/en/general.yml new file mode 100644 index 000000000..71e81ed7f --- /dev/null +++ b/locales/en/general.yml @@ -0,0 +1,14 @@ +en: + general: + type_in_file: "Type this in the file %{filename}:" + further_reading: "Further Reading" + fuzzy_hint: "The greyed-out text may differ and is not important." + step_title: "Step %{num}" + step_title_suffix: ": " + next_step: "Next Step:" + option: "Option %{num}: " + verify: "Verify %{text}" + goals: "Goals" + expand_all: "Expand All" + other_pages: "Other Pages" + back_to: "Back to" diff --git a/locales/en/header_sections.yml b/locales/en/header_sections.yml new file mode 100644 index 000000000..df5b8c68a --- /dev/null +++ b/locales/en/header_sections.yml @@ -0,0 +1,10 @@ +en: + header_section: + steps: "Steps" + explanation: "Explanation" + overview: "Overview" + discussion: "Discussion Items" + hints: "Hints" + challenge: "Challenge(s)" + tools_and_references: "Tools and References" + requirements: "Requirements to advance" diff --git a/locales/en/sites.yml b/locales/en/sites.yml new file mode 100644 index 000000000..906063685 --- /dev/null +++ b/locales/en/sites.yml @@ -0,0 +1,3 @@ +en: + sites: + other_categories: Other Stuff diff --git a/locales/es/captions.yml b/locales/es/captions.yml new file mode 100644 index 000000000..c2e4ea129 --- /dev/null +++ b/locales/es/captions.yml @@ -0,0 +1,7 @@ +es: + captions: + terminal: "Escribe esto en la línea de comandos:" + irb: "Escribe esto en irb:" + result: "Resultado esperado:" + fuzzy_result: "Resultado aproximado esperado:" + link: "Ir a" diff --git a/locales/es/general.yml b/locales/es/general.yml new file mode 100644 index 000000000..116fb0f16 --- /dev/null +++ b/locales/es/general.yml @@ -0,0 +1,14 @@ +es: + general: + type_in_file: "Escribe esto en el archivo %{filename}:" + further_reading: "Lectura adicional" + fuzzy_hint: "El texto en gris puede variar y no es tan importante." + step_title: "Paso %{num}" + step_title_suffix: ": " + next_step: "Próximo paso:" + option: "Opción %{num}: " + verify: "Verifica %{text}" + goals: "Objetivos" + expand_all: "Expandir Todo" + other_pages: "Otras Páginas" + back_to: "Regresar a" diff --git a/locales/es/header_sections.yml b/locales/es/header_sections.yml new file mode 100644 index 000000000..21e082978 --- /dev/null +++ b/locales/es/header_sections.yml @@ -0,0 +1,10 @@ +en: + header_section: + steps: "Pasos" + explanation: "Explicación" + overview: "Resumen" + discussion: "Elementos para discusión" + hints: "Pistas" + challenge: "Reto(s)" + tools_and_references: "Herramientas y Referencias" + requirements: "Requisitos para avanzar" diff --git a/locales/es/sites.yml b/locales/es/sites.yml new file mode 100644 index 000000000..1cdac0ba2 --- /dev/null +++ b/locales/es/sites.yml @@ -0,0 +1,3 @@ +es: + sites: + other_categories: Otras cosas diff --git a/locales/zh-tw/captions.yml b/locales/zh-tw/captions.yml new file mode 100644 index 000000000..a4947bae8 --- /dev/null +++ b/locales/zh-tw/captions.yml @@ -0,0 +1,7 @@ +zh-tw: + captions: + terminal: "在終端機打這些字:" + irb: "在 irb 打這些字:" + result: "預期的結果:" + fuzzy_result: "大概預期的結果:" + link: "來這裡:" diff --git a/locales/zh-tw/general.yml b/locales/zh-tw/general.yml new file mode 100644 index 000000000..e0437e289 --- /dev/null +++ b/locales/zh-tw/general.yml @@ -0,0 +1,14 @@ +zh-tw: + general: + type_in_file: "在 %{filename} 檔裡面打這些字:" + further_reading: "延伸閱讀" + fuzzy_hint: "塗灰的字可能有所不同,不重要。" + goals: "目標" + verify: "檢查 %{text}" + option: "選項 %{num}:" + next_step: "下一步:" + step_title: "步驟 %{num}" + step_title_suffix: ":" + expand_all: "全部展開" + other_pages: "其他頁面" + back_to: "回到" diff --git a/locales/zh-tw/header_section.yml b/locales/zh-tw/header_section.yml new file mode 100644 index 000000000..645c69d33 --- /dev/null +++ b/locales/zh-tw/header_section.yml @@ -0,0 +1,10 @@ +zh-tw: + header_section: + steps: "步驟" + explanation: "解說" + overview: "摘要" + discussion: "討論" + hints: "秘訣" + challenge: "挑戰" + tools_and_references: "工具、參考資料" + requirements: "通關條件" diff --git a/sites/en/docs/docs.step b/sites/docs/docs.step similarity index 100% rename from sites/en/docs/docs.step rename to sites/docs/docs.step diff --git a/sites/es/hola/hola.step b/sites/es/hola/hola.step deleted file mode 100644 index f0e5f45b0..000000000 --- a/sites/es/hola/hola.step +++ /dev/null @@ -1 +0,0 @@ -message "Hola! Que tal?" diff --git a/sites/en/frontend/HTML_attributes.step b/sites/frontend/HTML_attributes.step similarity index 100% rename from sites/en/frontend/HTML_attributes.step rename to sites/frontend/HTML_attributes.step diff --git a/sites/en/frontend/HTML_structure.step b/sites/frontend/HTML_structure.step similarity index 100% rename from sites/en/frontend/HTML_structure.step rename to sites/frontend/HTML_structure.step diff --git a/sites/en/frontend/HTML_tags.step b/sites/frontend/HTML_tags.step similarity index 100% rename from sites/en/frontend/HTML_tags.step rename to sites/frontend/HTML_tags.step diff --git a/sites/en/frontend/_consider_deploying_to_github.step b/sites/frontend/_consider_deploying_to_github.step similarity index 100% rename from sites/en/frontend/_consider_deploying_to_github.step rename to sites/frontend/_consider_deploying_to_github.step diff --git a/sites/en/frontend/_consider_deploying_to_github_again.step b/sites/frontend/_consider_deploying_to_github_again.step similarity index 100% rename from sites/en/frontend/_consider_deploying_to_github_again.step rename to sites/frontend/_consider_deploying_to_github_again.step diff --git a/sites/en/frontend/_developer_tools.step b/sites/frontend/_developer_tools.step similarity index 100% rename from sites/en/frontend/_developer_tools.step rename to sites/frontend/_developer_tools.step diff --git a/sites/en/frontend/_working_effectively_and_efficiently.md b/sites/frontend/_working_effectively_and_efficiently.md similarity index 100% rename from sites/en/frontend/_working_effectively_and_efficiently.md rename to sites/frontend/_working_effectively_and_efficiently.md diff --git a/sites/en/frontend/add_more_elements.step b/sites/frontend/add_more_elements.step similarity index 100% rename from sites/en/frontend/add_more_elements.step rename to sites/frontend/add_more_elements.step diff --git a/sites/en/frontend/add_starter_files.step b/sites/frontend/add_starter_files.step similarity index 100% rename from sites/en/frontend/add_starter_files.step rename to sites/frontend/add_starter_files.step diff --git a/sites/en/frontend/basic_CSS.step b/sites/frontend/basic_CSS.step similarity index 100% rename from sites/en/frontend/basic_CSS.step rename to sites/frontend/basic_CSS.step diff --git a/sites/en/frontend/basic_javascript.step b/sites/frontend/basic_javascript.step similarity index 100% rename from sites/en/frontend/basic_javascript.step rename to sites/frontend/basic_javascript.step diff --git a/sites/en/frontend/deploying_to_github.step b/sites/frontend/deploying_to_github.step similarity index 100% rename from sites/en/frontend/deploying_to_github.step rename to sites/frontend/deploying_to_github.step diff --git a/sites/en/frontend/deploying_to_github_again.step b/sites/frontend/deploying_to_github_again.step similarity index 100% rename from sites/en/frontend/deploying_to_github_again.step rename to sites/frontend/deploying_to_github_again.step diff --git a/sites/en/frontend/developer_tools.step b/sites/frontend/developer_tools.step similarity index 100% rename from sites/en/frontend/developer_tools.step rename to sites/frontend/developer_tools.step diff --git a/sites/en/frontend/front-end-lesson.zip-manifest b/sites/frontend/front-end-lesson.zip-manifest similarity index 100% rename from sites/en/frontend/front-end-lesson.zip-manifest rename to sites/frontend/front-end-lesson.zip-manifest diff --git a/sites/en/frontend/frontend.step b/sites/frontend/frontend.step similarity index 100% rename from sites/en/frontend/frontend.step rename to sites/frontend/frontend.step diff --git a/sites/en/frontend/get_a_sticker.step b/sites/frontend/get_a_sticker.step similarity index 100% rename from sites/en/frontend/get_a_sticker.step rename to sites/frontend/get_a_sticker.step diff --git a/sites/en/frontend/grid.html b/sites/frontend/grid.html similarity index 100% rename from sites/en/frontend/grid.html rename to sites/frontend/grid.html diff --git a/sites/en/frontend/griding_with_bootstrap.step b/sites/frontend/griding_with_bootstrap.step similarity index 100% rename from sites/en/frontend/griding_with_bootstrap.step rename to sites/frontend/griding_with_bootstrap.step diff --git a/sites/en/frontend/html_quick_reference.md b/sites/frontend/html_quick_reference.md similarity index 100% rename from sites/en/frontend/html_quick_reference.md rename to sites/frontend/html_quick_reference.md diff --git a/sites/en/frontend/img/boxmodel.png b/sites/frontend/img/boxmodel.png similarity index 100% rename from sites/en/frontend/img/boxmodel.png rename to sites/frontend/img/boxmodel.png diff --git a/sites/en/frontend/img/css.png b/sites/frontend/img/css.png similarity index 100% rename from sites/en/frontend/img/css.png rename to sites/frontend/img/css.png diff --git a/sites/en/frontend/img/css_bundler.png b/sites/frontend/img/css_bundler.png similarity index 100% rename from sites/en/frontend/img/css_bundler.png rename to sites/frontend/img/css_bundler.png diff --git a/sites/en/frontend/img/css_class.png b/sites/frontend/img/css_class.png similarity index 100% rename from sites/en/frontend/img/css_class.png rename to sites/frontend/img/css_class.png diff --git a/sites/en/frontend/img/css_id.png b/sites/frontend/img/css_id.png similarity index 100% rename from sites/en/frontend/img/css_id.png rename to sites/frontend/img/css_id.png diff --git a/sites/en/frontend/img/css_zen.png b/sites/frontend/img/css_zen.png similarity index 100% rename from sites/en/frontend/img/css_zen.png rename to sites/frontend/img/css_zen.png diff --git a/sites/en/frontend/img/devtools.png b/sites/frontend/img/devtools.png similarity index 100% rename from sites/en/frontend/img/devtools.png rename to sites/frontend/img/devtools.png diff --git a/sites/en/frontend/img/devtools_console.png b/sites/frontend/img/devtools_console.png similarity index 100% rename from sites/en/frontend/img/devtools_console.png rename to sites/frontend/img/devtools_console.png diff --git a/sites/en/frontend/img/devtools_elements.png b/sites/frontend/img/devtools_elements.png similarity index 100% rename from sites/en/frontend/img/devtools_elements.png rename to sites/frontend/img/devtools_elements.png diff --git a/sites/en/frontend/img/devtools_network.png b/sites/frontend/img/devtools_network.png similarity index 100% rename from sites/en/frontend/img/devtools_network.png rename to sites/frontend/img/devtools_network.png diff --git a/sites/en/frontend/img/devtools_script.png b/sites/frontend/img/devtools_script.png similarity index 100% rename from sites/en/frontend/img/devtools_script.png rename to sites/frontend/img/devtools_script.png diff --git a/sites/en/frontend/img/get_a_sticker_fork_button.png b/sites/frontend/img/get_a_sticker_fork_button.png similarity index 100% rename from sites/en/frontend/img/get_a_sticker_fork_button.png rename to sites/frontend/img/get_a_sticker_fork_button.png diff --git a/sites/en/frontend/img/get_a_sticker_https.png b/sites/frontend/img/get_a_sticker_https.png similarity index 100% rename from sites/en/frontend/img/get_a_sticker_https.png rename to sites/frontend/img/get_a_sticker_https.png diff --git a/sites/en/frontend/img/get_a_sticker_output.png b/sites/frontend/img/get_a_sticker_output.png similarity index 100% rename from sites/en/frontend/img/get_a_sticker_output.png rename to sites/frontend/img/get_a_sticker_output.png diff --git a/sites/en/frontend/img/github_create_repo.png b/sites/frontend/img/github_create_repo.png similarity index 100% rename from sites/en/frontend/img/github_create_repo.png rename to sites/frontend/img/github_create_repo.png diff --git a/sites/en/frontend/img/github_name_your_repo.png b/sites/frontend/img/github_name_your_repo.png similarity index 100% rename from sites/en/frontend/img/github_name_your_repo.png rename to sites/frontend/img/github_name_your_repo.png diff --git a/sites/en/frontend/img/hello_html.png b/sites/frontend/img/hello_html.png similarity index 100% rename from sites/en/frontend/img/hello_html.png rename to sites/frontend/img/hello_html.png diff --git a/sites/en/frontend/img/hello_omg.png b/sites/frontend/img/hello_omg.png similarity index 100% rename from sites/en/frontend/img/hello_omg.png rename to sites/frontend/img/hello_omg.png diff --git a/sites/en/frontend/img/hello_structure.png b/sites/frontend/img/hello_structure.png similarity index 100% rename from sites/en/frontend/img/hello_structure.png rename to sites/frontend/img/hello_structure.png diff --git a/sites/en/frontend/img/hello_style.png b/sites/frontend/img/hello_style.png similarity index 100% rename from sites/en/frontend/img/hello_style.png rename to sites/frontend/img/hello_style.png diff --git a/sites/en/frontend/img/hello_title.png b/sites/frontend/img/hello_title.png similarity index 100% rename from sites/en/frontend/img/hello_title.png rename to sites/frontend/img/hello_title.png diff --git a/sites/en/frontend/img/hello_world.png b/sites/frontend/img/hello_world.png similarity index 100% rename from sites/en/frontend/img/hello_world.png rename to sites/frontend/img/hello_world.png diff --git a/sites/en/frontend/img/hello_world_2line.png b/sites/frontend/img/hello_world_2line.png similarity index 100% rename from sites/en/frontend/img/hello_world_2line.png rename to sites/frontend/img/hello_world_2line.png diff --git a/sites/en/frontend/img/hello_world_2line2.png b/sites/frontend/img/hello_world_2line2.png similarity index 100% rename from sites/en/frontend/img/hello_world_2line2.png rename to sites/frontend/img/hello_world_2line2.png diff --git a/sites/en/frontend/img/hello_world_jazzy.png b/sites/frontend/img/hello_world_jazzy.png similarity index 100% rename from sites/en/frontend/img/hello_world_jazzy.png rename to sites/frontend/img/hello_world_jazzy.png diff --git a/sites/en/frontend/img/html_tags_list.png b/sites/frontend/img/html_tags_list.png similarity index 100% rename from sites/en/frontend/img/html_tags_list.png rename to sites/frontend/img/html_tags_list.png diff --git a/sites/en/frontend/img/jquery_result.png b/sites/frontend/img/jquery_result.png similarity index 100% rename from sites/en/frontend/img/jquery_result.png rename to sites/frontend/img/jquery_result.png diff --git a/sites/en/frontend/img/page.png b/sites/frontend/img/page.png similarity index 100% rename from sites/en/frontend/img/page.png rename to sites/frontend/img/page.png diff --git a/sites/en/frontend/img/page_anchors.png b/sites/frontend/img/page_anchors.png similarity index 100% rename from sites/en/frontend/img/page_anchors.png rename to sites/frontend/img/page_anchors.png diff --git a/sites/en/frontend/img/page_html.png b/sites/frontend/img/page_html.png similarity index 100% rename from sites/en/frontend/img/page_html.png rename to sites/frontend/img/page_html.png diff --git a/sites/en/frontend/img/page_img.png b/sites/frontend/img/page_img.png similarity index 100% rename from sites/en/frontend/img/page_img.png rename to sites/frontend/img/page_img.png diff --git a/sites/en/frontend/img/page_sample.jpg b/sites/frontend/img/page_sample.jpg similarity index 100% rename from sites/en/frontend/img/page_sample.jpg rename to sites/frontend/img/page_sample.jpg diff --git a/sites/en/frontend/img/prompt.png b/sites/frontend/img/prompt.png similarity index 100% rename from sites/en/frontend/img/prompt.png rename to sites/frontend/img/prompt.png diff --git a/sites/en/frontend/img/zip.png b/sites/frontend/img/zip.png similarity index 100% rename from sites/en/frontend/img/zip.png rename to sites/frontend/img/zip.png diff --git a/sites/en/frontend/introduction_to_html.step b/sites/frontend/introduction_to_html.step similarity index 100% rename from sites/en/frontend/introduction_to_html.step rename to sites/frontend/introduction_to_html.step diff --git a/sites/en/frontend/jquery.step b/sites/frontend/jquery.step similarity index 100% rename from sites/en/frontend/jquery.step rename to sites/frontend/jquery.step diff --git a/sites/en/frontend/jquery_vs_javascript.step b/sites/frontend/jquery_vs_javascript.step similarity index 100% rename from sites/en/frontend/jquery_vs_javascript.step rename to sites/frontend/jquery_vs_javascript.step diff --git a/sites/en/frontend/make_a_web_page.step b/sites/frontend/make_a_web_page.step similarity index 100% rename from sites/en/frontend/make_a_web_page.step rename to sites/frontend/make_a_web_page.step diff --git a/sites/en/frontend/make_columns.step b/sites/frontend/make_columns.step similarity index 100% rename from sites/en/frontend/make_columns.step rename to sites/frontend/make_columns.step diff --git a/sites/en/frontend/resources.step b/sites/frontend/resources.step similarity index 100% rename from sites/en/frontend/resources.step rename to sites/frontend/resources.step diff --git a/sites/en/frontend/tool_installation.step b/sites/frontend/tool_installation.step similarity index 100% rename from sites/en/frontend/tool_installation.step rename to sites/frontend/tool_installation.step diff --git a/sites/en/frontend/zip_content/.gitignore b/sites/frontend/zip_content/.gitignore similarity index 100% rename from sites/en/frontend/zip_content/.gitignore rename to sites/frontend/zip_content/.gitignore diff --git a/sites/en/frontend/zip_content/index.html b/sites/frontend/zip_content/index.html similarity index 100% rename from sites/en/frontend/zip_content/index.html rename to sites/frontend/zip_content/index.html diff --git a/sites/en/frontend/zip_content/resources/javascript.js b/sites/frontend/zip_content/resources/javascript.js similarity index 100% rename from sites/en/frontend/zip_content/resources/javascript.js rename to sites/frontend/zip_content/resources/javascript.js diff --git a/sites/en/frontend/zip_content/resources/layout.css b/sites/frontend/zip_content/resources/layout.css similarity index 100% rename from sites/en/frontend/zip_content/resources/layout.css rename to sites/frontend/zip_content/resources/layout.css diff --git a/sites/en/frontend/zip_content/resources/picture.jpg b/sites/frontend/zip_content/resources/picture.jpg similarity index 100% rename from sites/en/frontend/zip_content/resources/picture.jpg rename to sites/frontend/zip_content/resources/picture.jpg diff --git a/sites/en/installfest/_command-line-glossary.md b/sites/installfest/_command-line-glossary.md similarity index 100% rename from sites/en/installfest/_command-line-glossary.md rename to sites/installfest/_command-line-glossary.md diff --git a/sites/en/installfest/_general-glossary.md b/sites/installfest/_general-glossary.md similarity index 100% rename from sites/en/installfest/_general-glossary.md rename to sites/installfest/_general-glossary.md diff --git a/sites/en/installfest/_install_atom_for_mac.step b/sites/installfest/_install_atom_for_mac.step similarity index 100% rename from sites/en/installfest/_install_atom_for_mac.step rename to sites/installfest/_install_atom_for_mac.step diff --git a/sites/en/installfest/_install_homebrew.step b/sites/installfest/_install_homebrew.step similarity index 100% rename from sites/en/installfest/_install_homebrew.step rename to sites/installfest/_install_homebrew.step diff --git a/sites/en/installfest/_install_ruby.step b/sites/installfest/_install_ruby.step similarity index 100% rename from sites/en/installfest/_install_ruby.step rename to sites/installfest/_install_ruby.step diff --git a/sites/en/installfest/_install_rvm.step b/sites/installfest/_install_rvm.step similarity index 100% rename from sites/en/installfest/_install_rvm.step rename to sites/installfest/_install_rvm.step diff --git a/sites/en/installfest/_install_textmate.step b/sites/installfest/_install_textmate.step similarity index 100% rename from sites/en/installfest/_install_textmate.step rename to sites/installfest/_install_textmate.step diff --git a/sites/en/installfest/_ruby-and-rails-glossary.md b/sites/installfest/_ruby-and-rails-glossary.md similarity index 100% rename from sites/en/installfest/_ruby-and-rails-glossary.md rename to sites/installfest/_ruby-and-rails-glossary.md diff --git a/sites/en/installfest/_switch_to_home_directory.step b/sites/installfest/_switch_to_home_directory.step similarity index 100% rename from sites/en/installfest/_switch_to_home_directory.step rename to sites/installfest/_switch_to_home_directory.step diff --git a/sites/en/installfest/choose_your_operating_system.step b/sites/installfest/choose_your_operating_system.step similarity index 100% rename from sites/en/installfest/choose_your_operating_system.step rename to sites/installfest/choose_your_operating_system.step diff --git a/sites/en/installfest/clean_up.step b/sites/installfest/clean_up.step similarity index 100% rename from sites/en/installfest/clean_up.step rename to sites/installfest/clean_up.step diff --git a/sites/en/installfest/configure_git.step b/sites/installfest/configure_git.step similarity index 100% rename from sites/en/installfest/configure_git.step rename to sites/installfest/configure_git.step diff --git a/sites/en/installfest/create_a_github_account.step b/sites/installfest/create_a_github_account.step similarity index 100% rename from sites/en/installfest/create_a_github_account.step rename to sites/installfest/create_a_github_account.step diff --git a/sites/en/installfest/create_a_heroku_account.step b/sites/installfest/create_a_heroku_account.step similarity index 100% rename from sites/en/installfest/create_a_heroku_account.step rename to sites/installfest/create_a_heroku_account.step diff --git a/sites/en/installfest/create_a_rails_app.step b/sites/installfest/create_a_rails_app.step similarity index 100% rename from sites/en/installfest/create_a_rails_app.step rename to sites/installfest/create_a_rails_app.step diff --git a/sites/en/installfest/create_an_ssh_key.step b/sites/installfest/create_an_ssh_key.step similarity index 100% rename from sites/en/installfest/create_an_ssh_key.step rename to sites/installfest/create_an_ssh_key.step diff --git a/sites/en/installfest/deploy_a_rails_app.step b/sites/installfest/deploy_a_rails_app.step similarity index 100% rename from sites/en/installfest/deploy_a_rails_app.step rename to sites/installfest/deploy_a_rails_app.step diff --git a/sites/en/installfest/editors.step b/sites/installfest/editors.step similarity index 100% rename from sites/en/installfest/editors.step rename to sites/installfest/editors.step diff --git a/sites/en/installfest/get_a_sticker.step b/sites/installfest/get_a_sticker.step similarity index 100% rename from sites/en/installfest/get_a_sticker.step rename to sites/installfest/get_a_sticker.step diff --git a/sites/en/installfest/glossary.step b/sites/installfest/glossary.step similarity index 100% rename from sites/en/installfest/glossary.step rename to sites/installfest/glossary.step diff --git a/sites/en/installfest/img/AboutThisMac.png b/sites/installfest/img/AboutThisMac.png similarity index 100% rename from sites/en/installfest/img/AboutThisMac.png rename to sites/installfest/img/AboutThisMac.png diff --git a/sites/en/installfest/img/WinRailsInstaller.jpg b/sites/installfest/img/WinRailsInstaller.jpg similarity index 100% rename from sites/en/installfest/img/WinRailsInstaller.jpg rename to sites/installfest/img/WinRailsInstaller.jpg diff --git a/sites/en/installfest/img/appstore.jpg b/sites/installfest/img/appstore.jpg similarity index 100% rename from sites/en/installfest/img/appstore.jpg rename to sites/installfest/img/appstore.jpg diff --git a/sites/en/installfest/img/directory.png b/sites/installfest/img/directory.png similarity index 100% rename from sites/en/installfest/img/directory.png rename to sites/installfest/img/directory.png diff --git a/sites/en/installfest/img/get_a_sticker_you_should_see.png b/sites/installfest/img/get_a_sticker_you_should_see.png similarity index 100% rename from sites/en/installfest/img/get_a_sticker_you_should_see.png rename to sites/installfest/img/get_a_sticker_you_should_see.png diff --git a/sites/en/installfest/img/install_atom_mac.gif b/sites/installfest/img/install_atom_mac.gif similarity index 100% rename from sites/en/installfest/img/install_atom_mac.gif rename to sites/installfest/img/install_atom_mac.gif diff --git a/sites/en/installfest/img/railsbridge_ubuntu12-checkbox.png b/sites/installfest/img/railsbridge_ubuntu12-checkbox.png similarity index 100% rename from sites/en/installfest/img/railsbridge_ubuntu12-checkbox.png rename to sites/installfest/img/railsbridge_ubuntu12-checkbox.png diff --git a/sites/en/installfest/img/railsbridge_windowsScreenshot-commandprompt-pinnedtotaskbar.png b/sites/installfest/img/railsbridge_windowsScreenshot-commandprompt-pinnedtotaskbar.png similarity index 100% rename from sites/en/installfest/img/railsbridge_windowsScreenshot-commandprompt-pinnedtotaskbar.png rename to sites/installfest/img/railsbridge_windowsScreenshot-commandprompt-pinnedtotaskbar.png diff --git a/sites/en/installfest/img/railsbridge_windowsScreenshot-commandprompt_ror.png b/sites/installfest/img/railsbridge_windowsScreenshot-commandprompt_ror.png similarity index 100% rename from sites/en/installfest/img/railsbridge_windowsScreenshot-commandprompt_ror.png rename to sites/installfest/img/railsbridge_windowsScreenshot-commandprompt_ror.png diff --git a/sites/en/installfest/img/railsbridge_windows_findingCommandPrompt_win7.png b/sites/installfest/img/railsbridge_windows_findingCommandPrompt_win7.png similarity index 100% rename from sites/en/installfest/img/railsbridge_windows_findingCommandPrompt_win7.png rename to sites/installfest/img/railsbridge_windows_findingCommandPrompt_win7.png diff --git a/sites/en/installfest/img/railsbridge_windows_findingCommandPrompt_win8.png b/sites/installfest/img/railsbridge_windows_findingCommandPrompt_win8.png similarity index 100% rename from sites/en/installfest/img/railsbridge_windows_findingCommandPrompt_win8.png rename to sites/installfest/img/railsbridge_windows_findingCommandPrompt_win8.png diff --git a/sites/en/installfest/img/successful_rails_install.png b/sites/installfest/img/successful_rails_install.png similarity index 100% rename from sites/en/installfest/img/successful_rails_install.png rename to sites/installfest/img/successful_rails_install.png diff --git a/sites/en/installfest/img/xcode-prefs.jpg b/sites/installfest/img/xcode-prefs.jpg similarity index 100% rename from sites/en/installfest/img/xcode-prefs.jpg rename to sites/installfest/img/xcode-prefs.jpg diff --git a/sites/en/installfest/img/xcode-tools-install.png b/sites/installfest/img/xcode-tools-install.png similarity index 100% rename from sites/en/installfest/img/xcode-tools-install.png rename to sites/installfest/img/xcode-tools-install.png diff --git a/sites/en/installfest/install_xcode.step b/sites/installfest/install_xcode.step similarity index 100% rename from sites/en/installfest/install_xcode.step rename to sites/installfest/install_xcode.step diff --git a/sites/en/installfest/install_xcode_command_line_tools.step b/sites/installfest/install_xcode_command_line_tools.step similarity index 100% rename from sites/en/installfest/install_xcode_command_line_tools.step rename to sites/installfest/install_xcode_command_line_tools.step diff --git a/sites/en/installfest/install_xcode_from_app_store.step b/sites/installfest/install_xcode_from_app_store.step similarity index 100% rename from sites/en/installfest/install_xcode_from_app_store.step rename to sites/installfest/install_xcode_from_app_store.step diff --git a/sites/en/installfest/install_xcode_from_dvd.step b/sites/installfest/install_xcode_from_dvd.step similarity index 100% rename from sites/en/installfest/install_xcode_from_dvd.step rename to sites/installfest/install_xcode_from_dvd.step diff --git a/sites/en/installfest/installfest.step b/sites/installfest/installfest.step similarity index 100% rename from sites/en/installfest/installfest.step rename to sites/installfest/installfest.step diff --git a/sites/en/installfest/linux.step b/sites/installfest/linux.step similarity index 100% rename from sites/en/installfest/linux.step rename to sites/installfest/linux.step diff --git a/sites/en/installfest/macOS.step b/sites/installfest/macOS.step similarity index 100% rename from sites/en/installfest/macOS.step rename to sites/installfest/macOS.step diff --git a/sites/en/installfest/osx_rvm.step b/sites/installfest/osx_rvm.step similarity index 100% rename from sites/en/installfest/osx_rvm.step rename to sites/installfest/osx_rvm.step diff --git a/sites/en/installfest/windows.step b/sites/installfest/windows.step similarity index 100% rename from sites/en/installfest/windows.step rename to sites/installfest/windows.step diff --git a/sites/en/intro-to-rails/CRUD_with_scaffolding.step b/sites/intro-to-rails/CRUD_with_scaffolding.step similarity index 100% rename from sites/en/intro-to-rails/CRUD_with_scaffolding.step rename to sites/intro-to-rails/CRUD_with_scaffolding.step diff --git a/sites/en/intro-to-rails/_consider_deploying.step b/sites/intro-to-rails/_consider_deploying.step similarity index 100% rename from sites/en/intro-to-rails/_consider_deploying.step rename to sites/intro-to-rails/_consider_deploying.step diff --git a/sites/en/intro-to-rails/_consider_deploying_again.step b/sites/intro-to-rails/_consider_deploying_again.step similarity index 100% rename from sites/en/intro-to-rails/_consider_deploying_again.step rename to sites/intro-to-rails/_consider_deploying_again.step diff --git a/sites/en/intro-to-rails/_deploying_to_heroku.step b/sites/intro-to-rails/_deploying_to_heroku.step similarity index 100% rename from sites/en/intro-to-rails/_deploying_to_heroku.step rename to sites/intro-to-rails/_deploying_to_heroku.step diff --git a/sites/en/intro-to-rails/_deploying_to_heroku_again.step b/sites/intro-to-rails/_deploying_to_heroku_again.step similarity index 100% rename from sites/en/intro-to-rails/_deploying_to_heroku_again.step rename to sites/intro-to-rails/_deploying_to_heroku_again.step diff --git a/sites/en/intro-to-rails/_switch_to_home_directory.step b/sites/intro-to-rails/_switch_to_home_directory.step similarity index 100% rename from sites/en/intro-to-rails/_switch_to_home_directory.step rename to sites/intro-to-rails/_switch_to_home_directory.step diff --git a/sites/en/intro-to-rails/_working_effectively_and_efficiently.md b/sites/intro-to-rails/_working_effectively_and_efficiently.md similarity index 100% rename from sites/en/intro-to-rails/_working_effectively_and_efficiently.md rename to sites/intro-to-rails/_working_effectively_and_efficiently.md diff --git a/sites/en/intro-to-rails/add_the_project_to_a_git_repo.step b/sites/intro-to-rails/add_the_project_to_a_git_repo.step similarity index 100% rename from sites/en/intro-to-rails/add_the_project_to_a_git_repo.step rename to sites/intro-to-rails/add_the_project_to_a_git_repo.step diff --git a/sites/en/intro-to-rails/allow_people_to_vote.step b/sites/intro-to-rails/allow_people_to_vote.step similarity index 100% rename from sites/en/intro-to-rails/allow_people_to_vote.step rename to sites/intro-to-rails/allow_people_to_vote.step diff --git a/sites/en/intro-to-rails/clean_up_links_on_the_topics_list.step b/sites/intro-to-rails/clean_up_links_on_the_topics_list.step similarity index 100% rename from sites/en/intro-to-rails/clean_up_links_on_the_topics_list.step rename to sites/intro-to-rails/clean_up_links_on_the_topics_list.step diff --git a/sites/en/intro-to-rails/creating_a_migration.step b/sites/intro-to-rails/creating_a_migration.step similarity index 100% rename from sites/en/intro-to-rails/creating_a_migration.step rename to sites/intro-to-rails/creating_a_migration.step diff --git a/sites/en/intro-to-rails/credits_and_next_steps.step b/sites/intro-to-rails/credits_and_next_steps.step similarity index 100% rename from sites/en/intro-to-rails/credits_and_next_steps.step rename to sites/intro-to-rails/credits_and_next_steps.step diff --git a/sites/en/intro-to-rails/deploying_to_heroku.step b/sites/intro-to-rails/deploying_to_heroku.step similarity index 100% rename from sites/en/intro-to-rails/deploying_to_heroku.step rename to sites/intro-to-rails/deploying_to_heroku.step diff --git a/sites/en/intro-to-rails/deploying_to_heroku_again.step b/sites/intro-to-rails/deploying_to_heroku_again.step similarity index 100% rename from sites/en/intro-to-rails/deploying_to_heroku_again.step rename to sites/intro-to-rails/deploying_to_heroku_again.step diff --git a/sites/en/intro-to-rails/getting_started.step b/sites/intro-to-rails/getting_started.step similarity index 100% rename from sites/en/intro-to-rails/getting_started.step rename to sites/intro-to-rails/getting_started.step diff --git a/sites/en/intro-to-rails/glossary.step b/sites/intro-to-rails/glossary.step similarity index 100% rename from sites/en/intro-to-rails/glossary.step rename to sites/intro-to-rails/glossary.step diff --git a/sites/en/intro-to-rails/hooking_up_votes_and_topics.step b/sites/intro-to-rails/hooking_up_votes_and_topics.step similarity index 100% rename from sites/en/intro-to-rails/hooking_up_votes_and_topics.step rename to sites/intro-to-rails/hooking_up_votes_and_topics.step diff --git a/sites/en/intro-to-rails/img/Seattle_list_with_topic.png b/sites/intro-to-rails/img/Seattle_list_with_topic.png similarity index 100% rename from sites/en/intro-to-rails/img/Seattle_list_with_topic.png rename to sites/intro-to-rails/img/Seattle_list_with_topic.png diff --git a/sites/en/intro-to-rails/img/Seattle_topic_created.png b/sites/intro-to-rails/img/Seattle_topic_created.png similarity index 100% rename from sites/en/intro-to-rails/img/Seattle_topic_created.png rename to sites/intro-to-rails/img/Seattle_topic_created.png diff --git a/sites/en/intro-to-rails/img/Seattle_topic_list_page.png b/sites/intro-to-rails/img/Seattle_topic_list_page.png similarity index 100% rename from sites/en/intro-to-rails/img/Seattle_topic_list_page.png rename to sites/intro-to-rails/img/Seattle_topic_list_page.png diff --git a/sites/en/intro-to-rails/img/Start_page.png b/sites/intro-to-rails/img/Start_page.png similarity index 100% rename from sites/en/intro-to-rails/img/Start_page.png rename to sites/intro-to-rails/img/Start_page.png diff --git a/sites/en/intro-to-rails/img/atom_add_folder_to_project.png b/sites/intro-to-rails/img/atom_add_folder_to_project.png similarity index 100% rename from sites/en/intro-to-rails/img/atom_add_folder_to_project.png rename to sites/intro-to-rails/img/atom_add_folder_to_project.png diff --git a/sites/en/intro-to-rails/img/atom_project_as_folder.png b/sites/intro-to-rails/img/atom_project_as_folder.png similarity index 100% rename from sites/en/intro-to-rails/img/atom_project_as_folder.png rename to sites/intro-to-rails/img/atom_project_as_folder.png diff --git a/sites/en/intro-to-rails/img/finished_app.png b/sites/intro-to-rails/img/finished_app.png similarity index 100% rename from sites/en/intro-to-rails/img/finished_app.png rename to sites/intro-to-rails/img/finished_app.png diff --git a/sites/en/intro-to-rails/img/mvc.png b/sites/intro-to-rails/img/mvc.png similarity index 100% rename from sites/en/intro-to-rails/img/mvc.png rename to sites/intro-to-rails/img/mvc.png diff --git a/sites/en/intro-to-rails/img/rails4_rails_info_routing.png b/sites/intro-to-rails/img/rails4_rails_info_routing.png similarity index 100% rename from sites/en/intro-to-rails/img/rails4_rails_info_routing.png rename to sites/intro-to-rails/img/rails4_rails_info_routing.png diff --git a/sites/en/intro-to-rails/img/workflow.png b/sites/intro-to-rails/img/workflow.png similarity index 100% rename from sites/en/intro-to-rails/img/workflow.png rename to sites/intro-to-rails/img/workflow.png diff --git a/sites/en/intro-to-rails/intro-to-rails.step b/sites/intro-to-rails/intro-to-rails.step similarity index 100% rename from sites/en/intro-to-rails/intro-to-rails.step rename to sites/intro-to-rails/intro-to-rails.step diff --git a/sites/en/intro-to-rails/make_the_topic_title_a_link.step b/sites/intro-to-rails/make_the_topic_title_a_link.step similarity index 100% rename from sites/en/intro-to-rails/make_the_topic_title_a_link.step rename to sites/intro-to-rails/make_the_topic_title_a_link.step diff --git a/sites/en/intro-to-rails/rails_architecture.step b/sites/intro-to-rails/rails_architecture.step similarity index 100% rename from sites/en/intro-to-rails/rails_architecture.step rename to sites/intro-to-rails/rails_architecture.step diff --git a/sites/en/intro-to-rails/redirect_to_the_topics_list_after_creating_a_new_topic.step b/sites/intro-to-rails/redirect_to_the_topics_list_after_creating_a_new_topic.step similarity index 100% rename from sites/en/intro-to-rails/redirect_to_the_topics_list_after_creating_a_new_topic.step rename to sites/intro-to-rails/redirect_to_the_topics_list_after_creating_a_new_topic.step diff --git a/sites/en/intro-to-rails/ruby_language.step b/sites/intro-to-rails/ruby_language.step similarity index 100% rename from sites/en/intro-to-rails/ruby_language.step rename to sites/intro-to-rails/ruby_language.step diff --git a/sites/en/intro-to-rails/running_your_application_locally.step b/sites/intro-to-rails/running_your_application_locally.step similarity index 100% rename from sites/en/intro-to-rails/running_your_application_locally.step rename to sites/intro-to-rails/running_your_application_locally.step diff --git a/sites/en/intro-to-rails/setting_the_default_page.step b/sites/intro-to-rails/setting_the_default_page.step similarity index 100% rename from sites/en/intro-to-rails/setting_the_default_page.step rename to sites/intro-to-rails/setting_the_default_page.step diff --git a/sites/en/intro-to-rails/voting_on_topics.step b/sites/intro-to-rails/voting_on_topics.step similarity index 100% rename from sites/en/intro-to-rails/voting_on_topics.step rename to sites/intro-to-rails/voting_on_topics.step diff --git a/sites/en/javascript-snake-game/img/browser_console.png b/sites/javascript-snake-game/img/browser_console.png similarity index 100% rename from sites/en/javascript-snake-game/img/browser_console.png rename to sites/javascript-snake-game/img/browser_console.png diff --git a/sites/en/javascript-snake-game/javascript-snake-game.step b/sites/javascript-snake-game/javascript-snake-game.step similarity index 100% rename from sites/en/javascript-snake-game/javascript-snake-game.step rename to sites/javascript-snake-game/javascript-snake-game.step diff --git a/sites/en/javascript-snake-game/js-snake-game-tutorial.zip-manifest b/sites/javascript-snake-game/js-snake-game-tutorial.zip-manifest similarity index 100% rename from sites/en/javascript-snake-game/js-snake-game-tutorial.zip-manifest rename to sites/javascript-snake-game/js-snake-game-tutorial.zip-manifest diff --git a/sites/en/javascript-snake-game/js/chunk.js b/sites/javascript-snake-game/js/chunk.js similarity index 100% rename from sites/en/javascript-snake-game/js/chunk.js rename to sites/javascript-snake-game/js/chunk.js diff --git a/sites/en/javascript-snake-game/js/lesson-10.js b/sites/javascript-snake-game/js/lesson-10.js similarity index 100% rename from sites/en/javascript-snake-game/js/lesson-10.js rename to sites/javascript-snake-game/js/lesson-10.js diff --git a/sites/en/javascript-snake-game/js/lesson-11.js b/sites/javascript-snake-game/js/lesson-11.js similarity index 100% rename from sites/en/javascript-snake-game/js/lesson-11.js rename to sites/javascript-snake-game/js/lesson-11.js diff --git a/sites/en/javascript-snake-game/js/lesson-12.js b/sites/javascript-snake-game/js/lesson-12.js similarity index 100% rename from sites/en/javascript-snake-game/js/lesson-12.js rename to sites/javascript-snake-game/js/lesson-12.js diff --git a/sites/en/javascript-snake-game/js/lesson-13.js b/sites/javascript-snake-game/js/lesson-13.js similarity index 100% rename from sites/en/javascript-snake-game/js/lesson-13.js rename to sites/javascript-snake-game/js/lesson-13.js diff --git a/sites/en/javascript-snake-game/js/lesson-2.js b/sites/javascript-snake-game/js/lesson-2.js similarity index 100% rename from sites/en/javascript-snake-game/js/lesson-2.js rename to sites/javascript-snake-game/js/lesson-2.js diff --git a/sites/en/javascript-snake-game/js/lesson-3.js b/sites/javascript-snake-game/js/lesson-3.js similarity index 100% rename from sites/en/javascript-snake-game/js/lesson-3.js rename to sites/javascript-snake-game/js/lesson-3.js diff --git a/sites/en/javascript-snake-game/js/lesson-4.js b/sites/javascript-snake-game/js/lesson-4.js similarity index 100% rename from sites/en/javascript-snake-game/js/lesson-4.js rename to sites/javascript-snake-game/js/lesson-4.js diff --git a/sites/en/javascript-snake-game/js/lesson-5.js b/sites/javascript-snake-game/js/lesson-5.js similarity index 100% rename from sites/en/javascript-snake-game/js/lesson-5.js rename to sites/javascript-snake-game/js/lesson-5.js diff --git a/sites/en/javascript-snake-game/js/lesson-6.js b/sites/javascript-snake-game/js/lesson-6.js similarity index 100% rename from sites/en/javascript-snake-game/js/lesson-6.js rename to sites/javascript-snake-game/js/lesson-6.js diff --git a/sites/en/javascript-snake-game/js/lesson-7.js b/sites/javascript-snake-game/js/lesson-7.js similarity index 100% rename from sites/en/javascript-snake-game/js/lesson-7.js rename to sites/javascript-snake-game/js/lesson-7.js diff --git a/sites/en/javascript-snake-game/js/lesson-8.js b/sites/javascript-snake-game/js/lesson-8.js similarity index 100% rename from sites/en/javascript-snake-game/js/lesson-8.js rename to sites/javascript-snake-game/js/lesson-8.js diff --git a/sites/en/javascript-snake-game/js/lesson-9.js b/sites/javascript-snake-game/js/lesson-9.js similarity index 100% rename from sites/en/javascript-snake-game/js/lesson-9.js rename to sites/javascript-snake-game/js/lesson-9.js diff --git a/sites/en/javascript-snake-game/js/snake.js b/sites/javascript-snake-game/js/snake.js similarity index 100% rename from sites/en/javascript-snake-game/js/snake.js rename to sites/javascript-snake-game/js/snake.js diff --git a/sites/en/javascript-snake-game/lesson-1.step b/sites/javascript-snake-game/lesson-1.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-1.step rename to sites/javascript-snake-game/lesson-1.step diff --git a/sites/en/javascript-snake-game/lesson-10.step b/sites/javascript-snake-game/lesson-10.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-10.step rename to sites/javascript-snake-game/lesson-10.step diff --git a/sites/en/javascript-snake-game/lesson-11.step b/sites/javascript-snake-game/lesson-11.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-11.step rename to sites/javascript-snake-game/lesson-11.step diff --git a/sites/en/javascript-snake-game/lesson-12.step b/sites/javascript-snake-game/lesson-12.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-12.step rename to sites/javascript-snake-game/lesson-12.step diff --git a/sites/en/javascript-snake-game/lesson-13.step b/sites/javascript-snake-game/lesson-13.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-13.step rename to sites/javascript-snake-game/lesson-13.step diff --git a/sites/en/javascript-snake-game/lesson-14.step b/sites/javascript-snake-game/lesson-14.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-14.step rename to sites/javascript-snake-game/lesson-14.step diff --git a/sites/en/javascript-snake-game/lesson-2.step b/sites/javascript-snake-game/lesson-2.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-2.step rename to sites/javascript-snake-game/lesson-2.step diff --git a/sites/en/javascript-snake-game/lesson-3.step b/sites/javascript-snake-game/lesson-3.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-3.step rename to sites/javascript-snake-game/lesson-3.step diff --git a/sites/en/javascript-snake-game/lesson-4.step b/sites/javascript-snake-game/lesson-4.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-4.step rename to sites/javascript-snake-game/lesson-4.step diff --git a/sites/en/javascript-snake-game/lesson-5.step b/sites/javascript-snake-game/lesson-5.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-5.step rename to sites/javascript-snake-game/lesson-5.step diff --git a/sites/en/javascript-snake-game/lesson-6.step b/sites/javascript-snake-game/lesson-6.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-6.step rename to sites/javascript-snake-game/lesson-6.step diff --git a/sites/en/javascript-snake-game/lesson-7.step b/sites/javascript-snake-game/lesson-7.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-7.step rename to sites/javascript-snake-game/lesson-7.step diff --git a/sites/en/javascript-snake-game/lesson-8.step b/sites/javascript-snake-game/lesson-8.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-8.step rename to sites/javascript-snake-game/lesson-8.step diff --git a/sites/en/javascript-snake-game/lesson-9.step b/sites/javascript-snake-game/lesson-9.step similarity index 100% rename from sites/en/javascript-snake-game/lesson-9.step rename to sites/javascript-snake-game/lesson-9.step diff --git a/sites/en/javascript-snake-game/zip_content/index.html b/sites/javascript-snake-game/zip_content/index.html similarity index 100% rename from sites/en/javascript-snake-game/zip_content/index.html rename to sites/javascript-snake-game/zip_content/index.html diff --git a/sites/en/javascript-snake-game/zip_content/snake.js b/sites/javascript-snake-game/zip_content/snake.js similarity index 100% rename from sites/en/javascript-snake-game/zip_content/snake.js rename to sites/javascript-snake-game/zip_content/snake.js diff --git a/sites/en/javascript-to-do-list-with-react/AdvancedTodoList.zip-manifest b/sites/javascript-to-do-list-with-react/AdvancedTodoList.zip-manifest similarity index 100% rename from sites/en/javascript-to-do-list-with-react/AdvancedTodoList.zip-manifest rename to sites/javascript-to-do-list-with-react/AdvancedTodoList.zip-manifest diff --git a/sites/en/javascript-to-do-list-with-react/adding_an_item.step b/sites/javascript-to-do-list-with-react/adding_an_item.step similarity index 100% rename from sites/en/javascript-to-do-list-with-react/adding_an_item.step rename to sites/javascript-to-do-list-with-react/adding_an_item.step diff --git a/sites/en/javascript-to-do-list-with-react/building_complex_applications_with_react.step b/sites/javascript-to-do-list-with-react/building_complex_applications_with_react.step similarity index 100% rename from sites/en/javascript-to-do-list-with-react/building_complex_applications_with_react.step rename to sites/javascript-to-do-list-with-react/building_complex_applications_with_react.step diff --git a/sites/en/javascript-to-do-list-with-react/creating_a_list.step b/sites/javascript-to-do-list-with-react/creating_a_list.step similarity index 100% rename from sites/en/javascript-to-do-list-with-react/creating_a_list.step rename to sites/javascript-to-do-list-with-react/creating_a_list.step diff --git a/sites/en/javascript-to-do-list-with-react/deploying_your_site.step b/sites/javascript-to-do-list-with-react/deploying_your_site.step similarity index 100% rename from sites/en/javascript-to-do-list-with-react/deploying_your_site.step rename to sites/javascript-to-do-list-with-react/deploying_your_site.step diff --git a/sites/en/javascript-to-do-list-with-react/developer_tools.step b/sites/javascript-to-do-list-with-react/developer_tools.step similarity index 100% rename from sites/en/javascript-to-do-list-with-react/developer_tools.step rename to sites/javascript-to-do-list-with-react/developer_tools.step diff --git a/sites/en/javascript-to-do-list-with-react/javascript-to-do-list-with-react.step b/sites/javascript-to-do-list-with-react/javascript-to-do-list-with-react.step similarity index 100% rename from sites/en/javascript-to-do-list-with-react/javascript-to-do-list-with-react.step rename to sites/javascript-to-do-list-with-react/javascript-to-do-list-with-react.step diff --git a/sites/en/javascript-to-do-list-with-react/loading_items.step b/sites/javascript-to-do-list-with-react/loading_items.step similarity index 100% rename from sites/en/javascript-to-do-list-with-react/loading_items.step rename to sites/javascript-to-do-list-with-react/loading_items.step diff --git a/sites/en/javascript-to-do-list-with-react/marking_an_item_as_complete.step b/sites/javascript-to-do-list-with-react/marking_an_item_as_complete.step similarity index 100% rename from sites/en/javascript-to-do-list-with-react/marking_an_item_as_complete.step rename to sites/javascript-to-do-list-with-react/marking_an_item_as_complete.step diff --git a/sites/en/javascript-to-do-list-with-react/next_steps.step b/sites/javascript-to-do-list-with-react/next_steps.step similarity index 100% rename from sites/en/javascript-to-do-list-with-react/next_steps.step rename to sites/javascript-to-do-list-with-react/next_steps.step diff --git a/sites/en/javascript-to-do-list-with-react/zip_content/app.js b/sites/javascript-to-do-list-with-react/zip_content/app.js similarity index 100% rename from sites/en/javascript-to-do-list-with-react/zip_content/app.js rename to sites/javascript-to-do-list-with-react/zip_content/app.js diff --git a/sites/en/javascript-to-do-list-with-react/zip_content/console-polyfill.js b/sites/javascript-to-do-list-with-react/zip_content/console-polyfill.js similarity index 100% rename from sites/en/javascript-to-do-list-with-react/zip_content/console-polyfill.js rename to sites/javascript-to-do-list-with-react/zip_content/console-polyfill.js diff --git a/sites/en/javascript-to-do-list-with-react/zip_content/debut_light.png b/sites/javascript-to-do-list-with-react/zip_content/debut_light.png similarity index 100% rename from sites/en/javascript-to-do-list-with-react/zip_content/debut_light.png rename to sites/javascript-to-do-list-with-react/zip_content/debut_light.png diff --git a/sites/en/javascript-to-do-list-with-react/zip_content/index.html b/sites/javascript-to-do-list-with-react/zip_content/index.html similarity index 100% rename from sites/en/javascript-to-do-list-with-react/zip_content/index.html rename to sites/javascript-to-do-list-with-react/zip_content/index.html diff --git a/sites/en/javascript-to-do-list-with-react/zip_content/store.js b/sites/javascript-to-do-list-with-react/zip_content/store.js similarity index 100% rename from sites/en/javascript-to-do-list-with-react/zip_content/store.js rename to sites/javascript-to-do-list-with-react/zip_content/store.js diff --git a/sites/en/javascript-to-do-list-with-react/zip_content/styles.css b/sites/javascript-to-do-list-with-react/zip_content/styles.css similarity index 100% rename from sites/en/javascript-to-do-list-with-react/zip_content/styles.css rename to sites/javascript-to-do-list-with-react/zip_content/styles.css diff --git a/sites/en/javascript-to-do-list/IntermediateTodoList.zip-manifest b/sites/javascript-to-do-list/IntermediateTodoList.zip-manifest similarity index 100% rename from sites/en/javascript-to-do-list/IntermediateTodoList.zip-manifest rename to sites/javascript-to-do-list/IntermediateTodoList.zip-manifest diff --git a/sites/en/javascript-to-do-list/_deploying_your_site.md b/sites/javascript-to-do-list/_deploying_your_site.md similarity index 100% rename from sites/en/javascript-to-do-list/_deploying_your_site.md rename to sites/javascript-to-do-list/_deploying_your_site.md diff --git a/sites/en/javascript-to-do-list/_lesson_format.md b/sites/javascript-to-do-list/_lesson_format.md similarity index 100% rename from sites/en/javascript-to-do-list/_lesson_format.md rename to sites/javascript-to-do-list/_lesson_format.md diff --git a/sites/en/javascript-to-do-list/_teachers_note.md b/sites/javascript-to-do-list/_teachers_note.md similarity index 100% rename from sites/en/javascript-to-do-list/_teachers_note.md rename to sites/javascript-to-do-list/_teachers_note.md diff --git a/sites/en/javascript-to-do-list/adding_an_item.step b/sites/javascript-to-do-list/adding_an_item.step similarity index 100% rename from sites/en/javascript-to-do-list/adding_an_item.step rename to sites/javascript-to-do-list/adding_an_item.step diff --git a/sites/en/javascript-to-do-list/creating_a_list.step b/sites/javascript-to-do-list/creating_a_list.step similarity index 100% rename from sites/en/javascript-to-do-list/creating_a_list.step rename to sites/javascript-to-do-list/creating_a_list.step diff --git a/sites/en/javascript-to-do-list/deploying_your_site.step b/sites/javascript-to-do-list/deploying_your_site.step similarity index 100% rename from sites/en/javascript-to-do-list/deploying_your_site.step rename to sites/javascript-to-do-list/deploying_your_site.step diff --git a/sites/en/javascript-to-do-list/developer_tools.step b/sites/javascript-to-do-list/developer_tools.step similarity index 100% rename from sites/en/javascript-to-do-list/developer_tools.step rename to sites/javascript-to-do-list/developer_tools.step diff --git a/sites/en/javascript-to-do-list/img/browser_console.png b/sites/javascript-to-do-list/img/browser_console.png similarity index 100% rename from sites/en/javascript-to-do-list/img/browser_console.png rename to sites/javascript-to-do-list/img/browser_console.png diff --git a/sites/en/javascript-to-do-list/img/finished_app.png b/sites/javascript-to-do-list/img/finished_app.png similarity index 100% rename from sites/en/javascript-to-do-list/img/finished_app.png rename to sites/javascript-to-do-list/img/finished_app.png diff --git a/sites/en/javascript-to-do-list/img/network_tab.png b/sites/javascript-to-do-list/img/network_tab.png similarity index 100% rename from sites/en/javascript-to-do-list/img/network_tab.png rename to sites/javascript-to-do-list/img/network_tab.png diff --git a/sites/en/javascript-to-do-list/img/text_editor_html.png b/sites/javascript-to-do-list/img/text_editor_html.png similarity index 100% rename from sites/en/javascript-to-do-list/img/text_editor_html.png rename to sites/javascript-to-do-list/img/text_editor_html.png diff --git a/sites/en/javascript-to-do-list/javascript-to-do-list.step b/sites/javascript-to-do-list/javascript-to-do-list.step similarity index 100% rename from sites/en/javascript-to-do-list/javascript-to-do-list.step rename to sites/javascript-to-do-list/javascript-to-do-list.step diff --git a/sites/en/javascript-to-do-list/loading_items.step b/sites/javascript-to-do-list/loading_items.step similarity index 100% rename from sites/en/javascript-to-do-list/loading_items.step rename to sites/javascript-to-do-list/loading_items.step diff --git a/sites/en/javascript-to-do-list/marking_an_item_as_complete.step b/sites/javascript-to-do-list/marking_an_item_as_complete.step similarity index 100% rename from sites/en/javascript-to-do-list/marking_an_item_as_complete.step rename to sites/javascript-to-do-list/marking_an_item_as_complete.step diff --git a/sites/en/javascript-to-do-list/next_steps.step b/sites/javascript-to-do-list/next_steps.step similarity index 100% rename from sites/en/javascript-to-do-list/next_steps.step rename to sites/javascript-to-do-list/next_steps.step diff --git a/sites/en/javascript-to-do-list/playing_with_jquery.step b/sites/javascript-to-do-list/playing_with_jquery.step similarity index 100% rename from sites/en/javascript-to-do-list/playing_with_jquery.step rename to sites/javascript-to-do-list/playing_with_jquery.step diff --git a/sites/en/javascript-to-do-list/programming_with_javascript.step b/sites/javascript-to-do-list/programming_with_javascript.step similarity index 100% rename from sites/en/javascript-to-do-list/programming_with_javascript.step rename to sites/javascript-to-do-list/programming_with_javascript.step diff --git a/sites/en/javascript-to-do-list/the_basics_of_a_website.step b/sites/javascript-to-do-list/the_basics_of_a_website.step similarity index 100% rename from sites/en/javascript-to-do-list/the_basics_of_a_website.step rename to sites/javascript-to-do-list/the_basics_of_a_website.step diff --git a/sites/en/javascript-to-do-list/zip_content/app.js b/sites/javascript-to-do-list/zip_content/app.js similarity index 100% rename from sites/en/javascript-to-do-list/zip_content/app.js rename to sites/javascript-to-do-list/zip_content/app.js diff --git a/sites/en/javascript-to-do-list/zip_content/debut_light.png b/sites/javascript-to-do-list/zip_content/debut_light.png similarity index 100% rename from sites/en/javascript-to-do-list/zip_content/debut_light.png rename to sites/javascript-to-do-list/zip_content/debut_light.png diff --git a/sites/en/javascript-to-do-list/zip_content/index.html b/sites/javascript-to-do-list/zip_content/index.html similarity index 100% rename from sites/en/javascript-to-do-list/zip_content/index.html rename to sites/javascript-to-do-list/zip_content/index.html diff --git a/sites/en/javascript-to-do-list/zip_content/styles.css b/sites/javascript-to-do-list/zip_content/styles.css similarity index 100% rename from sites/en/javascript-to-do-list/zip_content/styles.css rename to sites/javascript-to-do-list/zip_content/styles.css diff --git a/sites/en/job-board/add_a_navbar.step b/sites/job-board/add_a_navbar.step similarity index 100% rename from sites/en/job-board/add_a_navbar.step rename to sites/job-board/add_a_navbar.step diff --git a/sites/en/job-board/add_a_new_job_form.step b/sites/job-board/add_a_new_job_form.step similarity index 100% rename from sites/en/job-board/add_a_new_job_form.step rename to sites/job-board/add_a_new_job_form.step diff --git a/sites/en/job-board/add_more_things.step b/sites/job-board/add_more_things.step similarity index 100% rename from sites/en/job-board/add_more_things.step rename to sites/job-board/add_more_things.step diff --git a/sites/en/job-board/create_a_rails_app.step b/sites/job-board/create_a_rails_app.step similarity index 100% rename from sites/en/job-board/create_a_rails_app.step rename to sites/job-board/create_a_rails_app.step diff --git a/sites/en/job-board/crud_and_resourceful_routing.step b/sites/job-board/crud_and_resourceful_routing.step similarity index 100% rename from sites/en/job-board/crud_and_resourceful_routing.step rename to sites/job-board/crud_and_resourceful_routing.step diff --git a/sites/en/job-board/delete_job_listings.step b/sites/job-board/delete_job_listings.step similarity index 100% rename from sites/en/job-board/delete_job_listings.step rename to sites/job-board/delete_job_listings.step diff --git a/sites/en/job-board/img/crud_grid.jpg b/sites/job-board/img/crud_grid.jpg similarity index 100% rename from sites/en/job-board/img/crud_grid.jpg rename to sites/job-board/img/crud_grid.jpg diff --git a/sites/en/job-board/img/crud_rails_methods.jpg b/sites/job-board/img/crud_rails_methods.jpg similarity index 100% rename from sites/en/job-board/img/crud_rails_methods.jpg rename to sites/job-board/img/crud_rails_methods.jpg diff --git a/sites/en/job-board/img/rails-routes.png b/sites/job-board/img/rails-routes.png similarity index 100% rename from sites/en/job-board/img/rails-routes.png rename to sites/job-board/img/rails-routes.png diff --git a/sites/en/job-board/img/request-cycle.jpg b/sites/job-board/img/request-cycle.jpg similarity index 100% rename from sites/en/job-board/img/request-cycle.jpg rename to sites/job-board/img/request-cycle.jpg diff --git a/sites/en/job-board/job-board.step b/sites/job-board/job-board.step similarity index 100% rename from sites/en/job-board/job-board.step rename to sites/job-board/job-board.step diff --git a/sites/en/job-board/listing_the_jobs.step b/sites/job-board/listing_the_jobs.step similarity index 100% rename from sites/en/job-board/listing_the_jobs.step rename to sites/job-board/listing_the_jobs.step diff --git a/sites/en/job-board/make_a_jobs_home_page.step b/sites/job-board/make_a_jobs_home_page.step similarity index 100% rename from sites/en/job-board/make_a_jobs_home_page.step rename to sites/job-board/make_a_jobs_home_page.step diff --git a/sites/en/job-board/make_the_form_work.step b/sites/job-board/make_the_form_work.step similarity index 100% rename from sites/en/job-board/make_the_form_work.step rename to sites/job-board/make_the_form_work.step diff --git a/sites/en/job-board/store_jobs_in_the_database.step b/sites/job-board/store_jobs_in_the_database.step similarity index 100% rename from sites/en/job-board/store_jobs_in_the_database.step rename to sites/job-board/store_jobs_in_the_database.step diff --git a/sites/en/job-board/the_request_cycle.step b/sites/job-board/the_request_cycle.step similarity index 100% rename from sites/en/job-board/the_request_cycle.step rename to sites/job-board/the_request_cycle.step diff --git a/sites/en/job-board/update_job_listings.step b/sites/job-board/update_job_listings.step similarity index 100% rename from sites/en/job-board/update_job_listings.step rename to sites/job-board/update_job_listings.step diff --git a/sites/en/learn-to-code/argv.md b/sites/learn-to-code/argv.md similarity index 100% rename from sites/en/learn-to-code/argv.md rename to sites/learn-to-code/argv.md diff --git a/sites/en/learn-to-code/arrays.md b/sites/learn-to-code/arrays.md similarity index 100% rename from sites/en/learn-to-code/arrays.md rename to sites/learn-to-code/arrays.md diff --git a/sites/en/learn-to-code/computers.md b/sites/learn-to-code/computers.md similarity index 100% rename from sites/en/learn-to-code/computers.md rename to sites/learn-to-code/computers.md diff --git a/sites/en/learn-to-code/extra.md b/sites/learn-to-code/extra.md similarity index 100% rename from sites/en/learn-to-code/extra.md rename to sites/learn-to-code/extra.md diff --git a/sites/en/learn-to-code/functions.md b/sites/learn-to-code/functions.md similarity index 100% rename from sites/en/learn-to-code/functions.md rename to sites/learn-to-code/functions.md diff --git a/sites/en/learn-to-code/hashes.md b/sites/learn-to-code/hashes.md similarity index 100% rename from sites/en/learn-to-code/hashes.md rename to sites/learn-to-code/hashes.md diff --git a/sites/en/learn-to-code/img/cookie-recipe.gif b/sites/learn-to-code/img/cookie-recipe.gif similarity index 100% rename from sites/en/learn-to-code/img/cookie-recipe.gif rename to sites/learn-to-code/img/cookie-recipe.gif diff --git a/sites/en/learn-to-code/img/dot.jpg b/sites/learn-to-code/img/dot.jpg similarity index 100% rename from sites/en/learn-to-code/img/dot.jpg rename to sites/learn-to-code/img/dot.jpg diff --git a/sites/en/learn-to-code/img/fruit-banana-snack-banana.svg b/sites/learn-to-code/img/fruit-banana-snack-banana.svg similarity index 100% rename from sites/en/learn-to-code/img/fruit-banana-snack-banana.svg rename to sites/learn-to-code/img/fruit-banana-snack-banana.svg diff --git a/sites/en/learn-to-code/img/one-infinite-loop.jpg b/sites/learn-to-code/img/one-infinite-loop.jpg similarity index 100% rename from sites/en/learn-to-code/img/one-infinite-loop.jpg rename to sites/learn-to-code/img/one-infinite-loop.jpg diff --git a/sites/en/learn-to-code/img/snack-apple.svg b/sites/learn-to-code/img/snack-apple.svg similarity index 100% rename from sites/en/learn-to-code/img/snack-apple.svg rename to sites/learn-to-code/img/snack-apple.svg diff --git a/sites/en/learn-to-code/img/snack-fruit.svg b/sites/learn-to-code/img/snack-fruit.svg similarity index 100% rename from sites/en/learn-to-code/img/snack-fruit.svg rename to sites/learn-to-code/img/snack-fruit.svg diff --git a/sites/en/learn-to-code/img/spoon.jpg b/sites/learn-to-code/img/spoon.jpg similarity index 100% rename from sites/en/learn-to-code/img/spoon.jpg rename to sites/learn-to-code/img/spoon.jpg diff --git a/sites/en/learn-to-code/img/truthiness.png b/sites/learn-to-code/img/truthiness.png similarity index 100% rename from sites/en/learn-to-code/img/truthiness.png rename to sites/learn-to-code/img/truthiness.png diff --git a/sites/en/learn-to-code/img/warehouse.jpg b/sites/learn-to-code/img/warehouse.jpg similarity index 100% rename from sites/en/learn-to-code/img/warehouse.jpg rename to sites/learn-to-code/img/warehouse.jpg diff --git a/sites/en/learn-to-code/img/wargames-terminal.jpg b/sites/learn-to-code/img/wargames-terminal.jpg similarity index 100% rename from sites/en/learn-to-code/img/wargames-terminal.jpg rename to sites/learn-to-code/img/wargames-terminal.jpg diff --git a/sites/en/learn-to-code/input_and_output.md b/sites/learn-to-code/input_and_output.md similarity index 100% rename from sites/en/learn-to-code/input_and_output.md rename to sites/learn-to-code/input_and_output.md diff --git a/sites/en/learn-to-code/learn-to-code.md b/sites/learn-to-code/learn-to-code.md similarity index 100% rename from sites/en/learn-to-code/learn-to-code.md rename to sites/learn-to-code/learn-to-code.md diff --git a/sites/en/learn-to-code/logic.md b/sites/learn-to-code/logic.md similarity index 100% rename from sites/en/learn-to-code/logic.md rename to sites/learn-to-code/logic.md diff --git a/sites/en/learn-to-code/loops.md b/sites/learn-to-code/loops.md similarity index 100% rename from sites/en/learn-to-code/loops.md rename to sites/learn-to-code/loops.md diff --git a/sites/en/learn-to-code/methods.md b/sites/learn-to-code/methods.md similarity index 100% rename from sites/en/learn-to-code/methods.md rename to sites/learn-to-code/methods.md diff --git a/sites/en/learn-to-code/next_steps.md b/sites/learn-to-code/next_steps.md similarity index 100% rename from sites/en/learn-to-code/next_steps.md rename to sites/learn-to-code/next_steps.md diff --git a/sites/en/learn-to-code/nil.md b/sites/learn-to-code/nil.md similarity index 100% rename from sites/en/learn-to-code/nil.md rename to sites/learn-to-code/nil.md diff --git a/sites/en/learn-to-code/numbers.md b/sites/learn-to-code/numbers.md similarity index 100% rename from sites/en/learn-to-code/numbers.md rename to sites/learn-to-code/numbers.md diff --git a/sites/en/learn-to-code/objects.md b/sites/learn-to-code/objects.md similarity index 100% rename from sites/en/learn-to-code/objects.md rename to sites/learn-to-code/objects.md diff --git a/sites/en/learn-to-code/sinatra.md b/sites/learn-to-code/sinatra.md similarity index 100% rename from sites/en/learn-to-code/sinatra.md rename to sites/learn-to-code/sinatra.md diff --git a/sites/en/learn-to-code/strings.md b/sites/learn-to-code/strings.md similarity index 100% rename from sites/en/learn-to-code/strings.md rename to sites/learn-to-code/strings.md diff --git a/sites/en/learn-to-code/the_command_line.md b/sites/learn-to-code/the_command_line.md similarity index 100% rename from sites/en/learn-to-code/the_command_line.md rename to sites/learn-to-code/the_command_line.md diff --git a/sites/en/learn-to-code/todo-learntocode.md b/sites/learn-to-code/todo-learntocode.md similarity index 100% rename from sites/en/learn-to-code/todo-learntocode.md rename to sites/learn-to-code/todo-learntocode.md diff --git a/sites/en/learn-to-code/variables.md b/sites/learn-to-code/variables.md similarity index 100% rename from sites/en/learn-to-code/variables.md rename to sites/learn-to-code/variables.md diff --git a/sites/en/message-board/add_other_features_of_your_choosing.step b/sites/message-board/add_other_features_of_your_choosing.step similarity index 100% rename from sites/en/message-board/add_other_features_of_your_choosing.step rename to sites/message-board/add_other_features_of_your_choosing.step diff --git a/sites/en/message-board/add_pages_to_create_and_look_at_individual_posts.step b/sites/message-board/add_pages_to_create_and_look_at_individual_posts.step similarity index 100% rename from sites/en/message-board/add_pages_to_create_and_look_at_individual_posts.step rename to sites/message-board/add_pages_to_create_and_look_at_individual_posts.step diff --git a/sites/en/message-board/add_replying.step b/sites/message-board/add_replying.step similarity index 100% rename from sites/en/message-board/add_replying.step rename to sites/message-board/add_replying.step diff --git a/sites/en/message-board/commands.md b/sites/message-board/commands.md similarity index 100% rename from sites/en/message-board/commands.md rename to sites/message-board/commands.md diff --git a/sites/en/message-board/create_a_new_rails_app_with_a_static_home_page.step b/sites/message-board/create_a_new_rails_app_with_a_static_home_page.step similarity index 100% rename from sites/en/message-board/create_a_new_rails_app_with_a_static_home_page.step rename to sites/message-board/create_a_new_rails_app_with_a_static_home_page.step diff --git a/sites/en/message-board/creating_a_new_controller.md b/sites/message-board/creating_a_new_controller.md similarity index 100% rename from sites/en/message-board/creating_a_new_controller.md rename to sites/message-board/creating_a_new_controller.md diff --git a/sites/en/message-board/img/create_post.png b/sites/message-board/img/create_post.png similarity index 100% rename from sites/en/message-board/img/create_post.png rename to sites/message-board/img/create_post.png diff --git a/sites/en/message-board/img/create_reply.png b/sites/message-board/img/create_reply.png similarity index 100% rename from sites/en/message-board/img/create_reply.png rename to sites/message-board/img/create_reply.png diff --git a/sites/en/message-board/img/header.png b/sites/message-board/img/header.png similarity index 100% rename from sites/en/message-board/img/header.png rename to sites/message-board/img/header.png diff --git a/sites/en/message-board/img/inline_reply.png b/sites/message-board/img/inline_reply.png similarity index 100% rename from sites/en/message-board/img/inline_reply.png rename to sites/message-board/img/inline_reply.png diff --git a/sites/en/message-board/img/post_index.png b/sites/message-board/img/post_index.png similarity index 100% rename from sites/en/message-board/img/post_index.png rename to sites/message-board/img/post_index.png diff --git a/sites/en/message-board/img/request-cycle.jpg b/sites/message-board/img/request-cycle.jpg similarity index 100% rename from sites/en/message-board/img/request-cycle.jpg rename to sites/message-board/img/request-cycle.jpg diff --git a/sites/en/message-board/img/show_post.png b/sites/message-board/img/show_post.png similarity index 100% rename from sites/en/message-board/img/show_post.png rename to sites/message-board/img/show_post.png diff --git a/sites/en/message-board/img/show_replies.png b/sites/message-board/img/show_replies.png similarity index 100% rename from sites/en/message-board/img/show_replies.png rename to sites/message-board/img/show_replies.png diff --git a/sites/en/message-board/img/static_home_page.png b/sites/message-board/img/static_home_page.png similarity index 100% rename from sites/en/message-board/img/static_home_page.png rename to sites/message-board/img/static_home_page.png diff --git a/sites/en/message-board/inline_replying_on_a_post.step b/sites/message-board/inline_replying_on_a_post.step similarity index 100% rename from sites/en/message-board/inline_replying_on_a_post.step rename to sites/message-board/inline_replying_on_a_post.step diff --git a/sites/en/message-board/install_devise.step b/sites/message-board/install_devise.step similarity index 100% rename from sites/en/message-board/install_devise.step rename to sites/message-board/install_devise.step diff --git a/sites/en/message-board/make_a_posts_index_page.step b/sites/message-board/make_a_posts_index_page.step similarity index 100% rename from sites/en/message-board/make_a_posts_index_page.step rename to sites/message-board/make_a_posts_index_page.step diff --git a/sites/en/message-board/make_it_pretty_with_bootstrap.step b/sites/message-board/make_it_pretty_with_bootstrap.step similarity index 100% rename from sites/en/message-board/make_it_pretty_with_bootstrap.step rename to sites/message-board/make_it_pretty_with_bootstrap.step diff --git a/sites/en/message-board/message-board.step b/sites/message-board/message-board.step similarity index 100% rename from sites/en/message-board/message-board.step rename to sites/message-board/message-board.step diff --git a/sites/en/message-board/mvc_overview.md b/sites/message-board/mvc_overview.md similarity index 100% rename from sites/en/message-board/mvc_overview.md rename to sites/message-board/mvc_overview.md diff --git a/sites/en/message-board/the_request_cycle.md b/sites/message-board/the_request_cycle.md similarity index 100% rename from sites/en/message-board/the_request_cycle.md rename to sites/message-board/the_request_cycle.md diff --git a/sites/en/ruby/arrays.step b/sites/ruby/arrays.step similarity index 100% rename from sites/en/ruby/arrays.step rename to sites/ruby/arrays.step diff --git a/sites/en/ruby/booleans.step b/sites/ruby/booleans.step similarity index 100% rename from sites/en/ruby/booleans.step rename to sites/ruby/booleans.step diff --git a/sites/en/ruby/classes.step b/sites/ruby/classes.step similarity index 100% rename from sites/en/ruby/classes.step rename to sites/ruby/classes.step diff --git a/sites/en/ruby/command_line.step b/sites/ruby/command_line.step similarity index 100% rename from sites/en/ruby/command_line.step rename to sites/ruby/command_line.step diff --git a/sites/en/ruby/conditionals.step b/sites/ruby/conditionals.step similarity index 100% rename from sites/en/ruby/conditionals.step rename to sites/ruby/conditionals.step diff --git a/sites/en/ruby/datatypes.step b/sites/ruby/datatypes.step similarity index 100% rename from sites/en/ruby/datatypes.step rename to sites/ruby/datatypes.step diff --git a/sites/en/ruby/functions.step b/sites/ruby/functions.step similarity index 100% rename from sites/en/ruby/functions.step rename to sites/ruby/functions.step diff --git a/sites/en/ruby/hashes.step b/sites/ruby/hashes.step similarity index 100% rename from sites/en/ruby/hashes.step rename to sites/ruby/hashes.step diff --git a/sites/en/ruby/how_to_write_a_program.step b/sites/ruby/how_to_write_a_program.step similarity index 100% rename from sites/en/ruby/how_to_write_a_program.step rename to sites/ruby/how_to_write_a_program.step diff --git a/sites/en/ruby/input_and_output.step b/sites/ruby/input_and_output.step similarity index 100% rename from sites/en/ruby/input_and_output.step rename to sites/ruby/input_and_output.step diff --git a/sites/en/ruby/irb.step b/sites/ruby/irb.step similarity index 100% rename from sites/en/ruby/irb.step rename to sites/ruby/irb.step diff --git a/sites/en/ruby/loops.step b/sites/ruby/loops.step similarity index 100% rename from sites/en/ruby/loops.step rename to sites/ruby/loops.step diff --git a/sites/en/ruby/nil.step b/sites/ruby/nil.step similarity index 100% rename from sites/en/ruby/nil.step rename to sites/ruby/nil.step diff --git a/sites/en/ruby/numbers_and_arithmetic.step b/sites/ruby/numbers_and_arithmetic.step similarity index 100% rename from sites/en/ruby/numbers_and_arithmetic.step rename to sites/ruby/numbers_and_arithmetic.step diff --git a/sites/en/ruby/overview:_building_blocks.step b/sites/ruby/overview:_building_blocks.step similarity index 100% rename from sites/en/ruby/overview:_building_blocks.step rename to sites/ruby/overview:_building_blocks.step diff --git a/sites/en/ruby/overview:_organizing.step b/sites/ruby/overview:_organizing.step similarity index 100% rename from sites/en/ruby/overview:_organizing.step rename to sites/ruby/overview:_organizing.step diff --git a/sites/en/ruby/ruby.step b/sites/ruby/ruby.step similarity index 100% rename from sites/en/ruby/ruby.step rename to sites/ruby/ruby.step diff --git a/sites/en/ruby/running_programs_from_a_file.step b/sites/ruby/running_programs_from_a_file.step similarity index 100% rename from sites/en/ruby/running_programs_from_a_file.step rename to sites/ruby/running_programs_from_a_file.step diff --git a/sites/en/ruby/strings.step b/sites/ruby/strings.step similarity index 100% rename from sites/en/ruby/strings.step rename to sites/ruby/strings.step diff --git a/sites/en/ruby/summary:_basics.step b/sites/ruby/summary:_basics.step similarity index 100% rename from sites/en/ruby/summary:_basics.step rename to sites/ruby/summary:_basics.step diff --git a/sites/en/ruby/summary:_tools.step b/sites/ruby/summary:_tools.step similarity index 100% rename from sites/en/ruby/summary:_tools.step rename to sites/ruby/summary:_tools.step diff --git a/sites/en/ruby/symbols.step b/sites/ruby/symbols.step similarity index 100% rename from sites/en/ruby/symbols.step rename to sites/ruby/symbols.step diff --git a/sites/en/ruby/using_virtual_machines.step b/sites/ruby/using_virtual_machines.step similarity index 100% rename from sites/en/ruby/using_virtual_machines.step rename to sites/ruby/using_virtual_machines.step diff --git a/sites/en/ruby/variables.step b/sites/ruby/variables.step similarity index 100% rename from sites/en/ruby/variables.step rename to sites/ruby/variables.step diff --git a/sites/en/ruby/what_is_ruby.step b/sites/ruby/what_is_ruby.step similarity index 100% rename from sites/en/ruby/what_is_ruby.step rename to sites/ruby/what_is_ruby.step diff --git a/sites/en/ruby/working_with_collections.step b/sites/ruby/working_with_collections.step similarity index 100% rename from sites/en/ruby/working_with_collections.step rename to sites/ruby/working_with_collections.step diff --git a/sites/en/testing-rails-applications/additional_concepts.step b/sites/testing-rails-applications/additional_concepts.step similarity index 100% rename from sites/en/testing-rails-applications/additional_concepts.step rename to sites/testing-rails-applications/additional_concepts.step diff --git a/sites/en/testing-rails-applications/final_challenge.step b/sites/testing-rails-applications/final_challenge.step similarity index 100% rename from sites/en/testing-rails-applications/final_challenge.step rename to sites/testing-rails-applications/final_challenge.step diff --git a/sites/en/testing-rails-applications/img/rails-test-types.png b/sites/testing-rails-applications/img/rails-test-types.png similarity index 100% rename from sites/en/testing-rails-applications/img/rails-test-types.png rename to sites/testing-rails-applications/img/rails-test-types.png diff --git a/sites/en/testing-rails-applications/testing-rails-applications.step b/sites/testing-rails-applications/testing-rails-applications.step similarity index 100% rename from sites/en/testing-rails-applications/testing-rails-applications.step rename to sites/testing-rails-applications/testing-rails-applications.step diff --git a/sites/en/testing-rails-applications/testing_frameworks.step b/sites/testing-rails-applications/testing_frameworks.step similarity index 100% rename from sites/en/testing-rails-applications/testing_frameworks.step rename to sites/testing-rails-applications/testing_frameworks.step diff --git a/sites/en/testing-rails-applications/types_of_tests.step b/sites/testing-rails-applications/types_of_tests.step similarity index 100% rename from sites/en/testing-rails-applications/types_of_tests.step rename to sites/testing-rails-applications/types_of_tests.step diff --git a/sites/en/testing-rails-applications/what_are_tests.step b/sites/testing-rails-applications/what_are_tests.step similarity index 100% rename from sites/en/testing-rails-applications/what_are_tests.step rename to sites/testing-rails-applications/what_are_tests.step diff --git a/sites/en/workshop/activities.md b/sites/workshop/activities.md similarity index 100% rename from sites/en/workshop/activities.md rename to sites/workshop/activities.md diff --git a/sites/en/workshop/beginners.mw b/sites/workshop/beginners.mw similarity index 100% rename from sites/en/workshop/beginners.mw rename to sites/workshop/beginners.mw diff --git a/sites/en/workshop/closing.deck.md b/sites/workshop/closing.deck.md similarity index 100% rename from sites/en/workshop/closing.deck.md rename to sites/workshop/closing.deck.md diff --git a/sites/en/workshop/command_prompt.mw b/sites/workshop/command_prompt.mw similarity index 100% rename from sites/en/workshop/command_prompt.mw rename to sites/workshop/command_prompt.mw diff --git a/sites/en/workshop/diagrams.mw b/sites/workshop/diagrams.mw similarity index 100% rename from sites/en/workshop/diagrams.mw rename to sites/workshop/diagrams.mw diff --git a/sites/en/workshop/foundational_skills.deck.md b/sites/workshop/foundational_skills.deck.md similarity index 100% rename from sites/en/workshop/foundational_skills.deck.md rename to sites/workshop/foundational_skills.deck.md diff --git a/sites/en/workshop/helpful_examples.mw b/sites/workshop/helpful_examples.mw similarity index 100% rename from sites/en/workshop/helpful_examples.mw rename to sites/workshop/helpful_examples.mw diff --git a/sites/en/workshop/img/Win7_search_programs.jpg b/sites/workshop/img/Win7_search_programs.jpg similarity index 100% rename from sites/en/workshop/img/Win7_search_programs.jpg rename to sites/workshop/img/Win7_search_programs.jpg diff --git a/sites/en/workshop/img/acrobat.jpg b/sites/workshop/img/acrobat.jpg similarity index 100% rename from sites/en/workshop/img/acrobat.jpg rename to sites/workshop/img/acrobat.jpg diff --git a/sites/en/workshop/img/agile.jpg b/sites/workshop/img/agile.jpg similarity index 100% rename from sites/en/workshop/img/agile.jpg rename to sites/workshop/img/agile.jpg diff --git a/sites/en/workshop/img/cheatsheet.png b/sites/workshop/img/cheatsheet.png similarity index 100% rename from sites/en/workshop/img/cheatsheet.png rename to sites/workshop/img/cheatsheet.png diff --git a/sites/en/workshop/img/ey_logo_rgb.png b/sites/workshop/img/ey_logo_rgb.png similarity index 100% rename from sites/en/workshop/img/ey_logo_rgb.png rename to sites/workshop/img/ey_logo_rgb.png diff --git a/sites/en/workshop/img/firefox.png b/sites/workshop/img/firefox.png similarity index 100% rename from sites/en/workshop/img/firefox.png rename to sites/workshop/img/firefox.png diff --git a/sites/en/workshop/img/git.png b/sites/workshop/img/git.png similarity index 100% rename from sites/en/workshop/img/git.png rename to sites/workshop/img/git.png diff --git a/sites/en/workshop/img/git_bash.png b/sites/workshop/img/git_bash.png similarity index 100% rename from sites/en/workshop/img/git_bash.png rename to sites/workshop/img/git_bash.png diff --git a/sites/en/workshop/img/itunes.png b/sites/workshop/img/itunes.png similarity index 100% rename from sites/en/workshop/img/itunes.png rename to sites/workshop/img/itunes.png diff --git a/sites/en/workshop/img/linux_logo.gif b/sites/workshop/img/linux_logo.gif similarity index 100% rename from sites/en/workshop/img/linux_logo.gif rename to sites/workshop/img/linux_logo.gif diff --git a/sites/en/workshop/img/mac_terminal_sm.png b/sites/workshop/img/mac_terminal_sm.png similarity index 100% rename from sites/en/workshop/img/mac_terminal_sm.png rename to sites/workshop/img/mac_terminal_sm.png diff --git a/sites/en/workshop/img/os_x_logo.jpg b/sites/workshop/img/os_x_logo.jpg similarity index 100% rename from sites/en/workshop/img/os_x_logo.jpg rename to sites/workshop/img/os_x_logo.jpg diff --git a/sites/en/workshop/img/rails_logo.jpg b/sites/workshop/img/rails_logo.jpg similarity index 100% rename from sites/en/workshop/img/rails_logo.jpg rename to sites/workshop/img/rails_logo.jpg diff --git a/sites/en/workshop/img/railsbridge_logo.png b/sites/workshop/img/railsbridge_logo.png similarity index 100% rename from sites/en/workshop/img/railsbridge_logo.png rename to sites/workshop/img/railsbridge_logo.png diff --git a/sites/en/workshop/img/ruby-logo.jpg b/sites/workshop/img/ruby-logo.jpg similarity index 100% rename from sites/en/workshop/img/ruby-logo.jpg rename to sites/workshop/img/ruby-logo.jpg diff --git a/sites/en/workshop/img/rubygems.png b/sites/workshop/img/rubygems.png similarity index 100% rename from sites/en/workshop/img/rubygems.png rename to sites/workshop/img/rubygems.png diff --git a/sites/en/workshop/img/windows_logo.gif b/sites/workshop/img/windows_logo.gif similarity index 100% rename from sites/en/workshop/img/windows_logo.gif rename to sites/workshop/img/windows_logo.gif diff --git a/sites/en/workshop/img/wordpress.jpg b/sites/workshop/img/wordpress.jpg similarity index 100% rename from sites/en/workshop/img/wordpress.jpg rename to sites/workshop/img/wordpress.jpg diff --git a/sites/en/workshop/more_teacher_training.deck.md b/sites/workshop/more_teacher_training.deck.md similarity index 100% rename from sites/en/workshop/more_teacher_training.deck.md rename to sites/workshop/more_teacher_training.deck.md diff --git a/sites/en/workshop/more_teacher_training_2016.deck.md b/sites/workshop/more_teacher_training_2016.deck.md similarity index 100% rename from sites/en/workshop/more_teacher_training_2016.deck.md rename to sites/workshop/more_teacher_training_2016.deck.md diff --git a/sites/en/workshop/noobie-outline.txt b/sites/workshop/noobie-outline.txt similarity index 100% rename from sites/en/workshop/noobie-outline.txt rename to sites/workshop/noobie-outline.txt diff --git a/sites/en/workshop/resources.md b/sites/workshop/resources.md similarity index 100% rename from sites/en/workshop/resources.md rename to sites/workshop/resources.md diff --git a/sites/en/workshop/ruby_for_beginners.deck.md b/sites/workshop/ruby_for_beginners.deck.md similarity index 100% rename from sites/en/workshop/ruby_for_beginners.deck.md rename to sites/workshop/ruby_for_beginners.deck.md diff --git a/sites/en/workshop/ruby_for_programmers.deck.md b/sites/workshop/ruby_for_programmers.deck.md similarity index 100% rename from sites/en/workshop/ruby_for_programmers.deck.md rename to sites/workshop/ruby_for_programmers.deck.md diff --git a/sites/en/workshop/ta_cheat_sheet.md b/sites/workshop/ta_cheat_sheet.md similarity index 100% rename from sites/en/workshop/ta_cheat_sheet.md rename to sites/workshop/ta_cheat_sheet.md diff --git a/sites/en/workshop/teacher_cheat_sheet.md b/sites/workshop/teacher_cheat_sheet.md similarity index 100% rename from sites/en/workshop/teacher_cheat_sheet.md rename to sites/workshop/teacher_cheat_sheet.md diff --git a/sites/en/workshop/teaching_tips.md b/sites/workshop/teaching_tips.md similarity index 100% rename from sites/en/workshop/teaching_tips.md rename to sites/workshop/teaching_tips.md diff --git a/sites/en/workshop/topics.md b/sites/workshop/topics.md similarity index 100% rename from sites/en/workshop/topics.md rename to sites/workshop/topics.md diff --git a/sites/en/workshop/web_apps.deck.md b/sites/workshop/web_apps.deck.md similarity index 100% rename from sites/en/workshop/web_apps.deck.md rename to sites/workshop/web_apps.deck.md diff --git a/sites/en/workshop/welcome.deck.md b/sites/workshop/welcome.deck.md similarity index 100% rename from sites/en/workshop/welcome.deck.md rename to sites/workshop/welcome.deck.md diff --git a/sites/en/workshop/workshop.md b/sites/workshop/workshop.md similarity index 100% rename from sites/en/workshop/workshop.md rename to sites/workshop/workshop.md diff --git a/sites/zh-tw/nihao/nihao.step b/sites/zh-tw/nihao/nihao.step deleted file mode 100644 index 76a2c10f7..000000000 --- a/sites/zh-tw/nihao/nihao.step +++ /dev/null @@ -1 +0,0 @@ -message "世界你好!" diff --git a/spec/site_spec.rb b/spec/site_spec.rb index 2675b0677..148971725 100644 --- a/spec/site_spec.rb +++ b/spec/site_spec.rb @@ -9,18 +9,14 @@ site_names.should include("installfest") site_names.should include("intro-to-rails") end - + it "has doc files" do installfest = Site.named("installfest") doc_filenames = installfest.docs.map(&:filename) doc_filenames.should include("configure_git.step") end - + it "finds the sites_dir" do Site.sites_dir.should == File.expand_path(File.join(File.dirname(__FILE__), "..", "sites", "en")) end - - it "finds the sites_dir for Spanish locale" do - Site.sites_dir('es').should == File.expand_path(File.join(File.dirname(__FILE__), "..", "sites", "es")) - end end From a1f772039a6c7b62e4548fb7682f64f618fcc3be Mon Sep 17 00:00:00 2001 From: Fer Perales Date: Tue, 23 Aug 2022 10:39:46 -0500 Subject: [PATCH 23/40] Create constant --- app.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app.rb b/app.rb index bce4ace91..314cdba43 100755 --- a/app.rb +++ b/app.rb @@ -32,6 +32,7 @@ class InstallFest < Sinatra::Application # Set available locales in Array of Strings; this is also used when # checking availability in dynamic locale assignment, they must be strings. AVAILABLE_LOCALES = %i[en es zh-tw].freeze + DEFAULT_SITE = "docs" set :assets, Sprockets::Environment.new settings.assets.append_path 'assets/stylesheets' @@ -70,7 +71,7 @@ def default_site if host && sites.include?(site = subdomain) site else - 'docs' + DEFAULT_SITE end end From 8b938ca69f41d8b4b1c18dfd04b5f7e3d6b5390e Mon Sep 17 00:00:00 2001 From: Fer Perales Date: Tue, 23 Aug 2022 10:39:57 -0500 Subject: [PATCH 24/40] Make conditional multiline --- app.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app.rb b/app.rb index 314cdba43..cd76b5862 100755 --- a/app.rb +++ b/app.rb @@ -113,7 +113,9 @@ def redirect_pages after '/:site/*' do # Any real page (starts with a site and doesn't end with an extension) # gets saved as the 'back' for the next pageload. - cookies[:docs_back_path] = request.fullpath if sites.include?(params[:site]) && !request.fullpath.match(/\..+\z/) + if sites.include?(params[:site]) && !request.fullpath.match(/\..+\z/) + cookies[:docs_back_path] = request.fullpath + end end def dynamic_locale From 9aaba0a53931ae3a7741a7d13c833e36d003270a Mon Sep 17 00:00:00 2001 From: Fer Perales Date: Tue, 23 Aug 2022 10:51:12 -0500 Subject: [PATCH 25/40] Revert style changes --- app.rb | 89 +++++++++++++++++++++++++++-------------------------- lib/site.rb | 12 ++++---- 2 files changed, 51 insertions(+), 50 deletions(-) diff --git a/app.rb b/app.rb index cd76b5862..0a6495a23 100755 --- a/app.rb +++ b/app.rb @@ -9,24 +9,23 @@ require 'zip' require 'tmpdir' -here = __dir__ +here = File.expand_path File.dirname(__FILE__) lib = File.expand_path "#{here}/lib" $: << lib -require 'doc_page' -require 'step_page' -require 'markdown_page' -require 'media_wiki_page' -require 'raw_page' -require 'deck' -require 'deck/rack_app' -require 'titleizer' -require 'site' -require 'sprockets' -require 'jquery-cdn' - -class InstallFest < Sinatra::Application - # TODO: use Sinatra::Base instead, with more explicit config +require "doc_page" +require "step_page" +require "markdown_page" +require "media_wiki_page" +require "raw_page" +require "deck" +require "deck/rack_app" +require "titleizer" +require "site" +require "sprockets" +require "jquery-cdn" + +class InstallFest < Sinatra::Application # TODO: use Sinatra::Base instead, with more explicit config include Erector::Mixin # Set available locales in Array of Strings; this is also used when @@ -35,13 +34,15 @@ class InstallFest < Sinatra::Application DEFAULT_SITE = "docs" set :assets, Sprockets::Environment.new - settings.assets.append_path 'assets/stylesheets' - settings.assets.append_path 'assets/javascripts' - settings.assets.append_path 'public/fonts' + settings.assets.append_path "assets/stylesheets" + settings.assets.append_path "assets/javascripts" + settings.assets.append_path "public/fonts" settings.assets.append_path Bootstrap.javascripts_path JqueryCdn.install(settings.assets) - set :cookie_options, domain: nil if settings.environment == :development + if settings.environment == :development + set :cookie_options, domain: nil + end configure do I18n::Backend::Simple.include(I18n::Backend::Fallbacks) @@ -55,16 +56,16 @@ class InstallFest < Sinatra::Application def initialize super - @here = __dir__ + @here = File.expand_path(File.dirname(__FILE__)) end attr_reader :here attr_writer :default_site - # TODO: test + # todo: test # returns the most-specific hostname component, e.g. "foo" for "foo.example.com" def subdomain - host.split('.').first + host.split(".").first end def default_site @@ -76,7 +77,7 @@ def default_site end def host - request&.host + request && request.host end def site_dir @@ -170,16 +171,16 @@ def render_page case ext - when 'deck.md', 'deck' + when "deck.md", "deck" render_deck - when 'md' + when "md" MarkdownPage.new(options).to_html - when 'mw' + when "mw" MediaWikiPage.new(options).to_html - when 'step' + when "step" StepPage.new(options).to_html else @@ -197,18 +198,18 @@ def render_page def render_deck slides = Deck::Slide.split(src) - Deck::SlideDeck.new(slides: slides).to_pretty + Deck::SlideDeck.new(:slides => slides).to_pretty end before do expires 3600, :public end - get '/favicon.ico' do + get "/favicon.ico" do halt 404 end - get '/assets/:file.:ext' do + get "/assets/:file.:ext" do mime_type = { 'js' => 'application/javascript', 'css' => 'text/css', @@ -219,16 +220,16 @@ def render_deck settings.assets["#{params[:file]}.#{params[:ext]}"] end - get '/fonts/font-awesome/:file' do + get "/fonts/font-awesome/:file" do font_path = File.join(FontAwesome::Sass.gem_path, 'assets', 'fonts', 'font-awesome', params[:file]) send_file font_path end - get '/' do + get "/" do redirect "/#{default_site}/" end - get '/:site/:name/src' do + get "/:site/:name/src" do RawPage.new( site: Site.named(params[:site], I18n.locale), page_name: params[:name], @@ -242,9 +243,9 @@ def render_deck halt 404 end - get '/:site/:name.zip' do + get "/:site/:name.zip" do manifest_path = "#{site_dir}/#{params[:name]}.zip-manifest" - if File.exist?(manifest_path) + if File.exists?(manifest_path) manifest_files = File.read(manifest_path).split("\n") zip_path = File.join(Dir.tmpdir, "#{params[:name]}.zip") FileUtils.rm_rf(zip_path) @@ -260,9 +261,9 @@ def render_deck end end - get '/:site/:name.:ext' do + get "/:site/:name.:ext" do if sites.include?(params[:site]) - if params[:ext] == 'deck' # to show a markdown page as slides, change the ".md" to ".deck" + if params[:ext] == "deck" # to show a markdown page as slides, change the ".md" to ".deck" render_deck else send_file "#{site_dir}/#{params[:name]}.#{params[:ext]}" @@ -270,16 +271,16 @@ def render_deck end end - get '/:site/:subdir/:name.:ext' do + get "/:site/:subdir/:name.:ext" do send_file "#{site_dir}/#{params[:subdir]}/#{params[:name]}.#{params[:ext]}" if sites.include?(params[:site]) end - get '/:site/:name/' do + get "/:site/:name/" do # remove any extraneous slash from otherwise well-formed page URLs redirect request.fullpath.chomp('/') end - get '/:site/:name' do + get "/:site/:name" do site_name = params[:site] if redirect_sites[site_name] redirect "#{redirect_sites[site_name]}/#{params[:name]}" @@ -294,22 +295,22 @@ def render_deck end end - get '/:site/:name/:section/' do + get "/:site/:name/:section/" do # remove any extraneous slash from otherwise well-formed page URLs redirect request.fullpath.chomp('/') end - get '/:site/:name/:section' do + get "/:site/:name/:section" do render_page end - get '/:site' do + get "/:site" do # add a slash to any URLs that contain only a site # (otherwise paths in that site's pages would resolve relative to the root) redirect "#{request.fullpath}/" end - get '/:site/' do + get "/:site/" do site_name = params[:site] if redirect_sites[site_name] redirect "#{redirect_sites[site_name]}/" diff --git a/lib/site.rb b/lib/site.rb index e40b0fbce..cd4fc4008 100644 --- a/lib/site.rb +++ b/lib/site.rb @@ -1,7 +1,7 @@ class Site - DOC_TYPES = %w[step md deck.md mw].freeze + DOC_TYPES = %w{step md deck.md mw} - @@here = __dir__ + @@here = File.expand_path(File.dirname(__FILE__)) @@project_root = File.dirname(@@here) def self.sites_dir @@ -12,7 +12,7 @@ def self.all Dir[File.join(sites_dir, '*')].map { |dir| Site.new(dir) } end - def self.named(name) + def self.named name site = all.detect { |folder| folder.name == name } raise "No site found with the name '#{name}'" unless site @@ -21,7 +21,7 @@ def self.named(name) attr_reader :dir - def initialize(dir) + def initialize dir @dir = dir end @@ -31,13 +31,13 @@ def name def docs file_path_glob = File.join(@dir, "*.{#{DOC_TYPES.join(',')}}") - Dir[file_path_glob].map { |path| Doc.new(path) } + Dir[file_path_glob].map{|path| Doc.new(path)} end class Doc attr_reader :path - def initialize(path) + def initialize path @path = path end From 4c5eb7865ab5b2ca2dc4f54c8a3f7d17949b39dd Mon Sep 17 00:00:00 2001 From: Fer Perales Date: Tue, 23 Aug 2022 10:54:38 -0500 Subject: [PATCH 26/40] Revert style changes --- app.rb | 65 ++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 25 deletions(-) diff --git a/app.rb b/app.rb index 0a6495a23..511670998 100755 --- a/app.rb +++ b/app.rb @@ -159,32 +159,34 @@ def back_path end def render_page - options = { - site: Site.named(params[:site]), - page_name: params[:name], - doc_title: Titleizer.title_for_page(params[:name]), - doc_path: doc_path, - back: back_path, - src: src, - locale: I18n.locale - } - - case ext - - when "deck.md", "deck" - render_deck + begin + options = { + site: Site.named(params[:site]), + page_name: params[:name], + doc_title: Titleizer.title_for_page(params[:name]), + doc_path: doc_path, + back: back_path, + src: src, + locale: I18n.locale + } + + case ext + + when "deck.md", "deck" + render_deck - when "md" - MarkdownPage.new(options).to_html + when "md" + MarkdownPage.new(options).to_html - when "mw" - MediaWikiPage.new(options).to_html + when "mw" + MediaWikiPage.new(options).to_html - when "step" - StepPage.new(options).to_html + when "step" + StepPage.new(options).to_html - else - raise "unknown file type #{doc_path}" + else + raise "unknown file type #{doc_path}" + end end rescue Errno::ENOENT => e p e @@ -205,7 +207,7 @@ def render_deck expires 3600, :public end - get "/favicon.ico" do + get '/favicon.ico' do halt 404 end @@ -220,7 +222,7 @@ def render_deck settings.assets["#{params[:file]}.#{params[:ext]}"] end - get "/fonts/font-awesome/:file" do + get '/fonts/font-awesome/:file' do font_path = File.join(FontAwesome::Sass.gem_path, 'assets', 'fonts', 'font-awesome', params[:file]) send_file font_path end @@ -230,6 +232,19 @@ def render_deck end get "/:site/:name/src" do + begin + RawPage.new( + site: Site.named(params[:site], I18n.locale), + page_name: params[:name], + doc_title: File.basename(doc_path), + doc_path: doc_path, + src: src, + locale: I18n.locale, + ).to_html + rescue Errno::ENOENT => e + p e + halt 404 + end RawPage.new( site: Site.named(params[:site], I18n.locale), page_name: params[:name], @@ -263,7 +278,7 @@ def render_deck get "/:site/:name.:ext" do if sites.include?(params[:site]) - if params[:ext] == "deck" # to show a markdown page as slides, change the ".md" to ".deck" + if params[:ext] == "deck" # to show a markdown page as slides, change the ".md" to ".deck" render_deck else send_file "#{site_dir}/#{params[:name]}.#{params[:ext]}" From 6381517f2e5363d07837ec0ad411d1e3dd84a958 Mon Sep 17 00:00:00 2001 From: Fer Perales Date: Tue, 23 Aug 2022 11:00:02 -0500 Subject: [PATCH 27/40] Revert style changes --- app.rb | 49 ++++++++++++++++++++----------------------------- 1 file changed, 20 insertions(+), 29 deletions(-) diff --git a/app.rb b/app.rb index 511670998..da7ca7787 100755 --- a/app.rb +++ b/app.rb @@ -22,10 +22,10 @@ require "deck/rack_app" require "titleizer" require "site" -require "sprockets" -require "jquery-cdn" +require 'sprockets' +require 'jquery-cdn' -class InstallFest < Sinatra::Application # TODO: use Sinatra::Base instead, with more explicit config +class InstallFest < Sinatra::Application # todo: use Sinatra::Base instead, with more explicit config include Erector::Mixin # Set available locales in Array of Strings; this is also used when @@ -106,9 +106,11 @@ def redirect_pages end before do - I18n.locale = dynamic_locale - rescue I18n::InvalidLocale - I18n.locale = I18n.default_locale + begin + I18n.locale = dynamic_locale + rescue I18n::InvalidLocale + I18n.locale = I18n.default_locale + end end after '/:site/*' do @@ -130,7 +132,7 @@ def src end def ext - Regexp.last_match(1) if doc_path.match(/\.(.*)/) + $1 if doc_path.match(/\.(.*)/) end def doc_path @@ -167,25 +169,25 @@ def render_page doc_path: doc_path, back: back_path, src: src, - locale: I18n.locale + locale: I18n.locale, } case ext - when "deck.md", "deck" - render_deck + when "deck.md", "deck" + render_deck - when "md" - MarkdownPage.new(options).to_html + when "md" + MarkdownPage.new(options).to_html - when "mw" - MediaWikiPage.new(options).to_html + when "mw" + MediaWikiPage.new(options).to_html - when "step" - StepPage.new(options).to_html + when "step" + StepPage.new(options).to_html - else - raise "unknown file type #{doc_path}" + else + raise "unknown file type #{doc_path}" end end rescue Errno::ENOENT => e @@ -245,17 +247,6 @@ def render_deck p e halt 404 end - RawPage.new( - site: Site.named(params[:site], I18n.locale), - page_name: params[:name], - doc_title: File.basename(doc_path), - doc_path: doc_path, - src: src, - locale: I18n.locale - ).to_html - rescue Errno::ENOENT => e - p e - halt 404 end get "/:site/:name.zip" do From 239de612cc23e1f61d26545084af6adfb275bc43 Mon Sep 17 00:00:00 2001 From: Fer Perales Date: Tue, 23 Aug 2022 11:03:20 -0500 Subject: [PATCH 28/40] Revert style changes --- app.rb | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/app.rb b/app.rb index da7ca7787..736ec5d39 100755 --- a/app.rb +++ b/app.rb @@ -189,15 +189,14 @@ def render_page else raise "unknown file type #{doc_path}" end + rescue Errno::ENOENT => e + p e + e.backtrace.each do |line| + break if line =~ %r{sinatra/base.rb} + puts "\t" + line + end + halt 404 end - rescue Errno::ENOENT => e - p e - e.backtrace.each do |line| - break if line =~ %r{sinatra/base.rb} - - puts "\t" + line - end - halt 404 end def render_deck From f0863872f1e953c5080c230a7ccc6c5c848dc597 Mon Sep 17 00:00:00 2001 From: Fer Perales Date: Tue, 23 Aug 2022 11:09:52 -0500 Subject: [PATCH 29/40] Revert style changes --- app.rb | 8 +++++--- lib/site.rb | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app.rb b/app.rb index 736ec5d39..c6f576ecf 100755 --- a/app.rb +++ b/app.rb @@ -192,8 +192,8 @@ def render_page rescue Errno::ENOENT => e p e e.backtrace.each do |line| - break if line =~ %r{sinatra/base.rb} - puts "\t" + line + break if line =~ /sinatra\/base.rb/ + puts "\t"+line end halt 404 end @@ -277,7 +277,9 @@ def render_deck end get "/:site/:subdir/:name.:ext" do - send_file "#{site_dir}/#{params[:subdir]}/#{params[:name]}.#{params[:ext]}" if sites.include?(params[:site]) + if sites.include?(params[:site]) + send_file "#{site_dir}/#{params[:subdir]}/#{params[:name]}.#{params[:ext]}" + end end get "/:site/:name/" do diff --git a/lib/site.rb b/lib/site.rb index cd4fc4008..d97d8c397 100644 --- a/lib/site.rb +++ b/lib/site.rb @@ -9,7 +9,7 @@ def self.sites_dir end def self.all - Dir[File.join(sites_dir, '*')].map { |dir| Site.new(dir) } + Dir[File.join(sites_dir, '*')].map{|dir| Site.new(dir)} end def self.named name @@ -48,5 +48,6 @@ def filename def name filename.split('.').first end + end end From fa31ff0f11c739a5bdee171bf40f037f57eae3de Mon Sep 17 00:00:00 2001 From: Fer Perales Date: Tue, 23 Aug 2022 11:53:43 -0500 Subject: [PATCH 30/40] Update specs --- app.rb | 2 +- spec/app_spec.rb | 4 ++-- spec/contents_spec.rb | 6 +++--- spec/site_index_spec.rb | 2 +- spec/site_spec.rb | 4 ++-- spec/site_syntax_spec.rb | 2 +- spec/support/i18n_helper.rb | 7 ++++--- 7 files changed, 14 insertions(+), 13 deletions(-) diff --git a/app.rb b/app.rb index c6f576ecf..024862ca6 100755 --- a/app.rb +++ b/app.rb @@ -30,7 +30,7 @@ class InstallFest < Sinatra::Application # todo: use Sinatra::Base instead, wi # Set available locales in Array of Strings; this is also used when # checking availability in dynamic locale assignment, they must be strings. - AVAILABLE_LOCALES = %i[en es zh-tw].freeze + AVAILABLE_LOCALES = %w[en es zh-tw].freeze DEFAULT_SITE = "docs" set :assets, Sprockets::Environment.new diff --git a/spec/app_spec.rb b/spec/app_spec.rb index 4bb0ad8b7..910d7efed 100755 --- a/spec/app_spec.rb +++ b/spec/app_spec.rb @@ -100,10 +100,10 @@ def get! *args end describe "in the 'es' locale" do - it "uses the 'es' subdir as the sites_dir" do + it "uses the same subdir as the sites_dir" do get "/", locale: "es" - es_dir = File.expand_path(File.join(__FILE__, "..", "..", "sites", "es")) + es_dir = File.expand_path(File.join(__FILE__, "..", "..", "sites")) expect(true_app.sites_dir).to eq(es_dir) end diff --git a/spec/contents_spec.rb b/spec/contents_spec.rb index 7c77c50db..568fd1279 100644 --- a/spec/contents_spec.rb +++ b/spec/contents_spec.rb @@ -16,8 +16,8 @@ describe "absolute links" do let(:site_name) { 'docs' } - let(:site_dir) { "#{real_sites_dir}/en/#{site_name}" } - let(:page_name) { 'docs' } + let(:site_dir) { "#{real_sites_dir}/#{site_name}" } + let(:page_name) { 'docs' } before do @toc_html = Nokogiri.parse(@toc.to_html) end @@ -30,7 +30,7 @@ describe 'capitalization' do let(:site_name) { 'installfest' } - let(:site_dir) { "#{real_sites_dir}/en/#{site_name}" } + let(:site_dir) { "#{real_sites_dir}/#{site_name}" } let(:page_name) { 'installfest' } before do @toc_html = Nokogiri.parse(@toc.to_html) diff --git a/spec/site_index_spec.rb b/spec/site_index_spec.rb index c69dc0d1d..d25404f52 100644 --- a/spec/site_index_spec.rb +++ b/spec/site_index_spec.rb @@ -9,7 +9,7 @@ end it "lists all sites in the /sites/ directory" do - all_sites = Dir['sites/en/**'].map { |site_path| site_path.sub('sites/en/', '') } + all_sites = Dir['sites/**'].map { |site_path| site_path.sub('sites/', '') } @site_index.sites.should =~ all_sites end diff --git a/spec/site_spec.rb b/spec/site_spec.rb index 148971725..599f96cbc 100644 --- a/spec/site_spec.rb +++ b/spec/site_spec.rb @@ -16,7 +16,7 @@ doc_filenames.should include("configure_git.step") end - it "finds the sites_dir" do - Site.sites_dir.should == File.expand_path(File.join(File.dirname(__FILE__), "..", "sites", "en")) + it "finds the default sites_dir" do + Site.sites_dir.should == File.expand_path(File.join(File.dirname(__FILE__), "..", "sites")) end end diff --git a/spec/site_syntax_spec.rb b/spec/site_syntax_spec.rb index 01fdb923f..9153deed7 100644 --- a/spec/site_syntax_spec.rb +++ b/spec/site_syntax_spec.rb @@ -16,7 +16,7 @@ def app InstallFest::AVAILABLE_LOCALES.each do |locale| describe "in locale '#{locale}'" do - Site.all(locale).each do |site| + Site.all.each do |site| describe "#{site.name} pages..." do it 'uses all images in the /img folder' do site_folder = File.expand_path(File.join(here, '..', 'sites', locale, site.name)) diff --git a/spec/support/i18n_helper.rb b/spec/support/i18n_helper.rb index 33306b365..502728e6f 100644 --- a/spec/support/i18n_helper.rb +++ b/spec/support/i18n_helper.rb @@ -1,4 +1,5 @@ require 'i18n' +require_relative '../../app' module I18nHelper def setup_test_translations @@ -6,10 +7,10 @@ def setup_test_translations top = File.expand_path "#{here}/../.." I18n::Backend::Simple.include(I18n::Backend::Fallbacks) - I18n.load_path = Dir[File.join(top, 'locales', '*.yml')] + I18n.load_path = Dir[File.join(top, 'locales', '**/*.yml')] I18n.backend.load_translations - I18n.available_locales = Dir['sites/*'].map { |path| File.basename(path).to_sym } + I18n.available_locales = ::InstallFest::AVAILABLE_LOCALES I18n.locale = :en end -end \ No newline at end of file +end From 61464ebb9778caa41980e33886afa3e301d8c982 Mon Sep 17 00:00:00 2001 From: Melissa Xie Date: Mon, 21 Nov 2022 18:54:25 -0500 Subject: [PATCH 31/40] Bump Ruby version to 2.7.6 This will also allow us to upgrade our Heroku stack to the almost-latest. --- .ruby-version | 2 +- Gemfile | 2 +- Gemfile.lock | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.ruby-version b/.ruby-version index a603bb50a..49cdd668e 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.7.5 +2.7.6 diff --git a/Gemfile b/Gemfile index ab6a5ab0e..024f0872a 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source "https://rubygems.org/" -ruby '2.7.5' +ruby '2.7.6' gem 'activesupport' gem "erector", "~> 0.10.0" diff --git a/Gemfile.lock b/Gemfile.lock index 7e0fac3b3..3a3c8dbf4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -140,7 +140,7 @@ DEPENDENCIES thin (= 1.8.1) RUBY VERSION - ruby 2.7.5p203 + ruby 2.7.6p219 BUNDLED WITH - 2.3.8 + 2.3.26 From 3b12c7d62658eebb656953871f10d4b0f249fd59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Nov 2022 00:06:17 +0000 Subject: [PATCH 32/40] Bump sinatra and sinatra-contrib Bumps [sinatra](https://github.com/sinatra/sinatra) and [sinatra-contrib](https://github.com/sinatra/sinatra). These dependencies needed to be updated together. Updates `sinatra` from 1.4.8 to 3.0.3 - [Release notes](https://github.com/sinatra/sinatra/releases) - [Changelog](https://github.com/sinatra/sinatra/blob/master/CHANGELOG.md) - [Commits](https://github.com/sinatra/sinatra/compare/v1.4.8...v3.0.3) Updates `sinatra-contrib` from 1.4.7 to 3.0.3 - [Release notes](https://github.com/sinatra/sinatra/releases) - [Changelog](https://github.com/sinatra/sinatra/blob/master/CHANGELOG.md) - [Commits](https://github.com/sinatra/sinatra/compare/v1.4.7...v3.0.3) --- updated-dependencies: - dependency-name: sinatra dependency-type: direct:production - dependency-name: sinatra-contrib dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Gemfile | 4 ++-- Gemfile.lock | 35 +++++++++++++++++++---------------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/Gemfile b/Gemfile index 024f0872a..5c9605ec8 100644 --- a/Gemfile +++ b/Gemfile @@ -4,8 +4,8 @@ ruby '2.7.6' gem 'activesupport' gem "erector", "~> 0.10.0" -gem "sinatra", "~> 1.4.0" -gem "sinatra-contrib", "~> 1.4.0" +gem "sinatra", "~> 3.0.3" +gem "sinatra-contrib", "~> 3.0.3" gem "nokogiri" gem "thin", "1.8.1" gem 'rack-codehighlighter' diff --git a/Gemfile.lock b/Gemfile.lock index 3a3c8dbf4..e8c50f7af 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -44,17 +44,19 @@ GEM ruby_dep (~> 1.2) mini_portile2 (2.8.0) minitest (5.15.0) - multi_json (1.12.1) + multi_json (1.15.0) + mustermann (3.0.0) + ruby2_keywords (~> 0.0.1) nokogiri (1.13.2) mini_portile2 (~> 2.8.0) racc (~> 1.4) polyglot (0.3.5) racc (1.6.0) - rack (1.6.13) + rack (2.2.4) rack-codehighlighter (0.5.1) nokogiri (>= 1.4.1) rack (>= 1.0.0) - rack-protection (1.5.5) + rack-protection (3.0.3) rack rack-test (0.6.3) rack (>= 1.0) @@ -78,22 +80,23 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.5.0) rspec-support (3.5.0) + ruby2_keywords (0.0.5) ruby_dep (1.5.0) rubyzip (1.3.0) sass (3.4.23) sassc (2.4.0) ffi (~> 1.9) - sinatra (1.4.8) - rack (~> 1.5) - rack-protection (~> 1.4) - tilt (>= 1.3, < 3) - sinatra-contrib (1.4.7) - backports (>= 2.0) + sinatra (3.0.3) + mustermann (~> 3.0) + rack (~> 2.2, >= 2.2.4) + rack-protection (= 3.0.3) + tilt (~> 2.0) + sinatra-contrib (3.0.3) multi_json - rack-protection - rack-test - sinatra (~> 1.4.0) - tilt (>= 1.3, < 3) + mustermann (~> 3.0) + rack-protection (= 3.0.3) + sinatra (= 3.0.3) + tilt (~> 2.0) sprockets (3.7.2) concurrent-ruby (~> 1.0) rack (> 1, < 3) @@ -102,7 +105,7 @@ GEM eventmachine (~> 1.0, >= 1.0.4) rack (>= 1, < 3) thread_safe (0.3.6) - tilt (2.0.6) + tilt (2.0.11) treetop (1.6.8) polyglot (~> 0.3) trollop (2.1.2) @@ -134,8 +137,8 @@ DEPENDENCIES rspec rubyzip sass - sinatra (~> 1.4.0) - sinatra-contrib (~> 1.4.0) + sinatra (~> 3.0.3) + sinatra-contrib (~> 3.0.3) sprockets thin (= 1.8.1) From 11890bc42dff1a369952393e79b96c9d76b770fe Mon Sep 17 00:00:00 2001 From: Melissa Xie Date: Mon, 21 Nov 2022 19:21:57 -0500 Subject: [PATCH 33/40] Bump rack-codehighlighter to latest Otherwise we'll get an exception about `bytesize` being undefined. --- Gemfile.lock | 6 +++--- app.rb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index e8c50f7af..c1f840cf4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -47,15 +47,15 @@ GEM multi_json (1.15.0) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) - nokogiri (1.13.2) + nokogiri (1.13.9) mini_portile2 (~> 2.8.0) racc (~> 1.4) polyglot (0.3.5) racc (1.6.0) rack (2.2.4) - rack-codehighlighter (0.5.1) + rack-codehighlighter (0.6.0) nokogiri (>= 1.4.1) - rack (>= 1.0.0) + rack (>= 2.0.0) rack-protection (3.0.3) rack rack-test (0.6.3) diff --git a/app.rb b/app.rb index fdb12c9dc..6d608967d 100755 --- a/app.rb +++ b/app.rb @@ -148,7 +148,7 @@ def doc_path end def back_path - path_parts = cookies[:docs_back_path].try(:split, '/') + path_parts = cookies[:docs_back_path]&.split('/') return unless path_parts && path_parts.length > 2 current_path_parts = request.fullpath.split('/') From e6bd34354f14f00e484c6a828c2ad428ad8cbc26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Nov 2022 00:24:57 +0000 Subject: [PATCH 34/40] Bump tzinfo from 1.2.9 to 1.2.10 Bumps [tzinfo](https://github.com/tzinfo/tzinfo) from 1.2.9 to 1.2.10. - [Release notes](https://github.com/tzinfo/tzinfo/releases) - [Changelog](https://github.com/tzinfo/tzinfo/blob/master/CHANGES.md) - [Commits](https://github.com/tzinfo/tzinfo/compare/v1.2.9...v1.2.10) --- updated-dependencies: - dependency-name: tzinfo dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index c1f840cf4..ae4b1e12e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -109,7 +109,7 @@ GEM treetop (1.6.8) polyglot (~> 0.3) trollop (2.1.2) - tzinfo (1.2.9) + tzinfo (1.2.10) thread_safe (~> 0.1) PLATFORMS From 0a58aa4d8b7a3f1092a51ad13d45a8d17817401a Mon Sep 17 00:00:00 2001 From: Peter Cai <222655+pcai@users.noreply.github.com> Date: Wed, 23 Aug 2023 17:42:29 +0000 Subject: [PATCH 35/40] bugfix spanish locale overwriting english --- locales/es/header_sections.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/es/header_sections.yml b/locales/es/header_sections.yml index 21e082978..79751c5ab 100644 --- a/locales/es/header_sections.yml +++ b/locales/es/header_sections.yml @@ -1,4 +1,4 @@ -en: +es: header_section: steps: "Pasos" explanation: "Explicación" From f5d9cdcdeedc2dbd61caea3932d5c9f492cceb2d Mon Sep 17 00:00:00 2001 From: Melissa Xie Date: Fri, 20 Oct 2023 21:28:51 -0400 Subject: [PATCH 36/40] Fix capitalization of GitHub across the board --- sites/installfest/_general-glossary.md | 2 +- sites/installfest/create_a_heroku_account.step | 2 +- sites/installfest/create_an_ssh_key.step | 4 ++-- sites/javascript-to-do-list/_deploying_your_site.md | 8 ++++---- sites/javascript-to-do-list/playing_with_jquery.step | 2 +- .../add_other_features_of_your_choosing.step | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/sites/installfest/_general-glossary.md b/sites/installfest/_general-glossary.md index 500253e8d..e96914968 100644 --- a/sites/installfest/_general-glossary.md +++ b/sites/installfest/_general-glossary.md @@ -6,7 +6,7 @@ **Git:** A type of **Version Control Software (VCS)**. -**Github:** A site that hosts git repositories. Github also adds a number of tools that aid interaction between developers collaborating on software. +**GitHub:** A site that hosts git repositories. GitHub also adds a number of tools that aid interaction between developers collaborating on software. **Grouping:** Indents and whitespaces are used for grouping code together and simplify readability. Ruby also uses do … end to group. diff --git a/sites/installfest/create_a_heroku_account.step b/sites/installfest/create_a_heroku_account.step index 8b364187d..1f4d06294 100644 --- a/sites/installfest/create_a_heroku_account.step +++ b/sites/installfest/create_a_heroku_account.step @@ -39,7 +39,7 @@ step "Add your SSH key to your Heroku account" do end section 'Optional Step: Create a GitHub account' do - message "Since by now you should have both Git and an SSH key, you can optionally [Create a Github account](create_a_github_account) to share code with your friends." + message "Since by now you should have both Git and an SSH key, you can optionally [Create a GitHub account](create_a_github_account) to share code with your friends." message "You don't need a GitHub account to complete the InstallFest, or the Intro To Rails, Job Board, or Message Board courses." end diff --git a/sites/installfest/create_an_ssh_key.step b/sites/installfest/create_an_ssh_key.step index f7c68254e..431cb02d3 100644 --- a/sites/installfest/create_an_ssh_key.step +++ b/sites/installfest/create_an_ssh_key.step @@ -1,6 +1,6 @@ message "An SSH key uniquely identifies you (and your computer) when your computer is communicating with other computers. Think of an SSH key as a fancy password." -message "You'll need one of these to create your Heroku and Github accounts." +message "You'll need one of these to create your Heroku and GitHub accounts." option "Did you use RailsInstaller on Windows?" do message "Congratulations, you already have an ssh key!" @@ -61,7 +61,7 @@ The key fingerprint is: message "If you look inside `~/.ssh/`, you will notice two files with the same name: `id_rsa` and `id_rsa.pub`." message "`id_rsa.pub` is your **public key** and can be shared freely." message "`id_rsa` is your **private key** and must be kept secret." - message "If someone else gets your private key and your passphrase, then they can pretend to be you and log on to your Heroku or Github accounts and cause mischief!" + message "If someone else gets your private key and your passphrase, then they can pretend to be you and log on to your Heroku or GitHub accounts and cause mischief!" end end diff --git a/sites/javascript-to-do-list/_deploying_your_site.md b/sites/javascript-to-do-list/_deploying_your_site.md index 2277556a1..608d627ed 100644 --- a/sites/javascript-to-do-list/_deploying_your_site.md +++ b/sites/javascript-to-do-list/_deploying_your_site.md @@ -7,7 +7,7 @@ There are three hosting options, depending on how much of a challenge you are lo for: * Use a static site hosting service -* Use git and Github Pages +* Use git and GitHub Pages * Roll your own with a hosting provider ### Using a Static Site Hosting Service @@ -24,10 +24,10 @@ javascript and have a working website. An easy one is Now you have a fully functioning site hosted online! Share the link with your friends and family and wow them with your skills! -### Using Git and Github Pages +### Using Git and GitHub Pages If you like with git and github, take a stab at setting up your site -with [Github Pages](http://pages.github.com/). The easiest thing to do is: +with [GitHub Pages](http://pages.github.com/). The easiest thing to do is: cd . 1. From the terminal, `cd` into your project directory @@ -36,7 +36,7 @@ cd . 1. Commit all the files 1. Create a remote repository on github for the project. 1. Follow their instructions for adding the github remote to your existing repo -1. Follow the instructions on [Github Pages](http://pages.github.com) for +1. Follow the instructions on [GitHub Pages](http://pages.github.com) for setting up a project site from scratch. 1. Make the `gh-pages` the default branch 1. Push it on up! diff --git a/sites/javascript-to-do-list/playing_with_jquery.step b/sites/javascript-to-do-list/playing_with_jquery.step index 4774d0cdc..45159ca1e 100644 --- a/sites/javascript-to-do-list/playing_with_jquery.step +++ b/sites/javascript-to-do-list/playing_with_jquery.step @@ -7,7 +7,7 @@ overview do message <<-MARKDOWN In addition to being a powerful programming language, Javascript allows you to make your web site interactive. You can use it to build anything from a simple animation to a giant web application like Twitter -or Github. It gives you total control to add, remove, or modify content you've made with HTML. +or GitHub. It gives you total control to add, remove, or modify content you've made with HTML. You can also use it to change styles and add or remove classes. In this lesson, we'll also be using jQuery to make interacting with the page easier. diff --git a/sites/message-board/add_other_features_of_your_choosing.step b/sites/message-board/add_other_features_of_your_choosing.step index af68759ee..836d3d56b 100644 --- a/sites/message-board/add_other_features_of_your_choosing.step +++ b/sites/message-board/add_other_features_of_your_choosing.step @@ -6,7 +6,7 @@ Suggestions: * Profile pages for users (enter user’s name or details, have it display alongside posts). * Post/Comment history for individual users (on their profile page?). * Easy user profile pictures with [Gravatar](https://gravatar.com/). -* Add login options with [Omniauth](https://github.com/intridea/omniauth), including Twitter, Facebook, Github, Google, and more. +* Add login options with [Omniauth](https://github.com/intridea/omniauth), including Twitter, Facebook, GitHub, Google, and more. * Check out the Devise [documentation for integrating with Omniauth](https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview). * Fiddle with the layout of the show page so it doesn't look bad. If it looks bad. It probably looks great. * Perhaps fancier post markup with Markdown or something similar. From da930f3b6fa61dacf936ba60d4cc5dec2bd20664 Mon Sep 17 00:00:00 2001 From: Fer Perales Date: Fri, 27 Oct 2023 09:41:31 -0600 Subject: [PATCH 37/40] Fix GitHub link --- lib/doc_page.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/doc_page.rb b/lib/doc_page.rb index 0848933b1..9f4d9e813 100644 --- a/lib/doc_page.rb +++ b/lib/doc_page.rb @@ -41,7 +41,7 @@ def file_name end def git_url - "https://github.com/railsbridge/docs/blob/master/sites/#{@locale}/#{site.name}/#{file_name}" + "https://github.com/railsbridge/docs/blob/master/sites/#{site.name}/#{file_name}" end def src_url From cd6ab141e9d3905f7f457776d6fda41ed119b8ae Mon Sep 17 00:00:00 2001 From: Fer Perales Date: Fri, 27 Oct 2023 10:21:49 -0600 Subject: [PATCH 38/40] Replace TravisCI with GitHub Actions --- .github/workflows/rspec.yml | 28 ++++++++++++++++++++++++++++ .travis.yml | 5 ----- 2 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/rspec.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/rspec.yml b/.github/workflows/rspec.yml new file mode 100644 index 000000000..82cc27550 --- /dev/null +++ b/.github/workflows/rspec.yml @@ -0,0 +1,28 @@ +name: RSpec + +on: + push: + branches: + - "main" + pull_request: + branches: + - main + +jobs: + rspec: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + + - name: Install dependencies + run: bundle install + + - name: Run test and linter + run: | + bundle exec rake diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index da2b835e5..000000000 --- a/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: ruby -rvm: - - 2.3.3 -cache: bundler -sudo: false From a0ccc30bd79d6604d6f4be374b24b0f2cf51268d Mon Sep 17 00:00:00 2001 From: Fernando Perales Date: Fri, 27 Oct 2023 11:28:31 -0600 Subject: [PATCH 39/40] Fix style issues --- .github/workflows/rspec.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rspec.yml b/.github/workflows/rspec.yml index 82cc27550..e62589a47 100644 --- a/.github/workflows/rspec.yml +++ b/.github/workflows/rspec.yml @@ -3,7 +3,7 @@ name: RSpec on: push: branches: - - "main" + - main pull_request: branches: - main @@ -24,5 +24,5 @@ jobs: run: bundle install - name: Run test and linter - run: | + run: bundle exec rake From 3ce743f11372847e3fe333953990ecb37360fe8d Mon Sep 17 00:00:00 2001 From: Fernando Perales Date: Fri, 3 Nov 2023 11:13:26 -0600 Subject: [PATCH 40/40] Upgrade Ruby to 3.2.2 --- .ruby-version | 2 +- .tool-versions | 1 + Gemfile | 20 ++-- Gemfile.lock | 144 ++++++++++++++++++++------- app.rb | 2 +- assets/stylesheets/font_awesome.scss | 2 - lib/step.rb | 14 +-- spec/app_deck_spec.rb | 2 +- spec/site_syntax_spec.rb | 3 +- 9 files changed, 130 insertions(+), 60 deletions(-) create mode 100644 .tool-versions diff --git a/.ruby-version b/.ruby-version index 49cdd668e..be94e6f53 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.7.6 +3.2.2 diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 000000000..f2a971aa7 --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +ruby 3.2.2 diff --git a/Gemfile b/Gemfile index 5c9605ec8..32eb465d5 100644 --- a/Gemfile +++ b/Gemfile @@ -1,32 +1,32 @@ source "https://rubygems.org/" -ruby '2.7.6' +ruby '3.2.2' gem 'activesupport' -gem "erector", "~> 0.10.0" -gem "sinatra", "~> 3.0.3" -gem "sinatra-contrib", "~> 3.0.3" +gem "erector", github: "erector/erector" +gem "sinatra" +gem "sinatra-contrib" gem "nokogiri" -gem "thin", "1.8.1" +gem "thin" gem 'rack-codehighlighter' gem 'coderay' -gem "deckrb", "~> 0.5.2" +gem "deckrb" gem "sass" gem "redcarpet" gem "rubyzip" -gem "i18n", "~> 0.7" +gem "i18n" gem 'font-awesome-sass' gem 'bootstrap-sass' gem 'jquery-cdn' gem 'sprockets' -gem 'ffi', "1.15.5" -gem 'backports', "3.23.0" +gem 'ffi' +gem 'backports' group :development do gem "rspec" gem "rerun" gem "rake" gem "rack-test" - gem "files", "~> 0.3.0" + gem 'files', github: "alexch/files" gem 'rb-fsevent', :platform => :ruby end diff --git a/Gemfile.lock b/Gemfile.lock index ae4b1e12e..346a686d9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,18 +1,38 @@ +GIT + remote: https://github.com/alexch/files.git + revision: 4938dd85ed79f421b808e8798764661a71cab5a4 + specs: + files (0.4.0) + +GIT + remote: https://github.com/erector/erector.git + revision: 32cb38e3381889295183230caf8bf334d2f0e82a + specs: + erector (0.10.0) + haml + jeweler + nokogiri + sass + treetop (>= 1.2.3) + GEM remote: https://rubygems.org/ specs: - activesupport (5.2.4.3) + activesupport (6.0.6.1) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) - autoprefixer-rails (10.4.2.0) + zeitwerk (~> 2.2, >= 2.2.2) + addressable (2.4.0) + autoprefixer-rails (10.4.15.0) execjs (~> 2) backports (3.23.0) bootstrap-sass (3.4.1) autoprefixer-rails (>= 5.2.1) sassc (>= 2.0.0) - coderay (1.1.1) + builder (3.2.4) + coderay (1.1.3) concurrent-ruby (1.1.9) daemons (1.2.4) deckrb (0.5.2) @@ -25,47 +45,89 @@ GEM redcarpet (~> 2) thin trollop - diff-lcs (1.3) - erector (0.10.0) - treetop (>= 1.2.3) + descendants_tracker (0.0.4) + thread_safe (~> 0.3, >= 0.3.1) + diff-lcs (1.5.0) eventmachine (1.2.3) execjs (2.8.1) + faraday (0.9.2) + multipart-post (>= 1.2, < 3) ffi (1.15.5) - files (0.3.1) - font-awesome-sass (4.7.0) - sass (>= 3.2) - i18n (0.8.1) + font-awesome-sass (6.4.2) + sassc (~> 2.0) + git (1.11.0) + rchardet (~> 1.8) + github_api (0.16.0) + addressable (~> 2.4.0) + descendants_tracker (~> 0.0.4) + faraday (~> 0.8, < 0.10) + hashie (>= 3.4) + mime-types (>= 1.16, < 3.0) + oauth2 (~> 1.0) + haml (6.2.3) + temple (>= 0.8.2) + thor + tilt + hashie (5.0.0) + highline (2.1.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jeweler (2.3.9) + builder + bundler + git (>= 1.2.5) + github_api (~> 0.16.0) + highline (>= 1.6.15) + nokogiri (>= 1.5.10) + psych + rake + rdoc + semver2 jquery-cdn (2.2.4) sprockets (>= 2) json (2.6.1) - listen (3.1.5) + jwt (2.7.1) + listen (3.0.8) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - ruby_dep (~> 1.2) + mime-types (2.99.3) mini_portile2 (2.8.0) - minitest (5.15.0) + minitest (5.20.0) multi_json (1.15.0) + multi_xml (0.6.0) + multipart-post (2.3.0) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) - nokogiri (1.13.9) + nokogiri (1.14.5) mini_portile2 (~> 2.8.0) racc (~> 1.4) + oauth2 (1.4.8) + faraday (>= 0.8, < 3.0) + jwt (>= 1.0, < 3.0) + multi_json (~> 1.3) + multi_xml (~> 0.5) + rack (>= 1.2, < 3) polyglot (0.3.5) - racc (1.6.0) + psych (5.1.1.1) + stringio + racc (1.7.2) rack (2.2.4) rack-codehighlighter (0.6.0) nokogiri (>= 1.4.1) rack (>= 2.0.0) - rack-protection (3.0.3) - rack + rack-protection (3.1.0) + rack (~> 2.2, >= 2.2.4) rack-test (0.6.3) rack (>= 1.0) - rake (12.3.3) + rake (13.1.0) rb-fsevent (0.9.8) rb-inotify (0.9.8) ffi (>= 0.5.0) + rchardet (1.8.0) + rdoc (6.5.0) + psych (>= 4.0.0) redcarpet (2.3.0) - rerun (0.11.0) + rerun (0.14.0) listen (~> 3.0) rspec (3.5.0) rspec-core (~> 3.5.0) @@ -81,29 +143,36 @@ GEM rspec-support (~> 3.5.0) rspec-support (3.5.0) ruby2_keywords (0.0.5) - ruby_dep (1.5.0) - rubyzip (1.3.0) - sass (3.4.23) + rubyzip (2.3.2) + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) sassc (2.4.0) ffi (~> 1.9) - sinatra (3.0.3) + semver2 (3.4.2) + sinatra (3.1.0) mustermann (~> 3.0) rack (~> 2.2, >= 2.2.4) - rack-protection (= 3.0.3) + rack-protection (= 3.1.0) tilt (~> 2.0) - sinatra-contrib (3.0.3) + sinatra-contrib (3.1.0) multi_json mustermann (~> 3.0) - rack-protection (= 3.0.3) - sinatra (= 3.0.3) + rack-protection (= 3.1.0) + sinatra (= 3.1.0) tilt (~> 2.0) sprockets (3.7.2) concurrent-ruby (~> 1.0) rack (> 1, < 3) + stringio (3.0.8) + temple (0.10.3) thin (1.8.1) daemons (~> 1.0, >= 1.0.9) eventmachine (~> 1.0, >= 1.0.4) rack (>= 1, < 3) + thor (1.3.0) thread_safe (0.3.6) tilt (2.0.11) treetop (1.6.8) @@ -111,21 +180,22 @@ GEM trollop (2.1.2) tzinfo (1.2.10) thread_safe (~> 0.1) + zeitwerk (2.6.12) PLATFORMS ruby DEPENDENCIES activesupport - backports (= 3.23.0) + backports bootstrap-sass coderay - deckrb (~> 0.5.2) - erector (~> 0.10.0) - ffi (= 1.15.5) - files (~> 0.3.0) + deckrb + erector! + ffi + files! font-awesome-sass - i18n (~> 0.7) + i18n jquery-cdn nokogiri rack-codehighlighter @@ -137,13 +207,13 @@ DEPENDENCIES rspec rubyzip sass - sinatra (~> 3.0.3) - sinatra-contrib (~> 3.0.3) + sinatra + sinatra-contrib sprockets - thin (= 1.8.1) + thin RUBY VERSION - ruby 2.7.6p219 + ruby 3.2.2p53 BUNDLED WITH 2.3.26 diff --git a/app.rb b/app.rb index 39694901c..9070515e4 100755 --- a/app.rb +++ b/app.rb @@ -250,7 +250,7 @@ def render_deck get "/:site/:name.zip" do manifest_path = "#{site_dir}/#{params[:name]}.zip-manifest" - if File.exists?(manifest_path) + if File.exist?(manifest_path) manifest_files = File.read(manifest_path).split("\n") zip_path = File.join(Dir.tmpdir, "#{params[:name]}.zip") FileUtils.rm_rf(zip_path) diff --git a/assets/stylesheets/font_awesome.scss b/assets/stylesheets/font_awesome.scss index 908bb887a..6fccacddb 100644 --- a/assets/stylesheets/font_awesome.scss +++ b/assets/stylesheets/font_awesome.scss @@ -1,3 +1 @@ $fa-font-path: '/fonts/font-awesome/'; - -@import 'http://github.com/font-awesome'; \ No newline at end of file diff --git a/lib/step.rb b/lib/step.rb index 2bc69f6a5..9c8154b85 100644 --- a/lib/step.rb +++ b/lib/step.rb @@ -74,7 +74,7 @@ def insert file ## steps %w[ - steps explanation overview discussion hints challenge + steps explanation overview discussion hints challenge tools_and_references requirements ].each do |type| define_method type.to_sym do |&block| @@ -87,7 +87,7 @@ def insert file end end - def step name = nil, options = {} + def step name = nil, options = {}, &block num = next_step_number a(name: "step#{current_anchor_num}") a(name: options[:anchor_name]) if options[:anchor_name] @@ -98,7 +98,7 @@ def step name = nil, options = {} (!name.nil? ? I18n.t("general.step_title_suffix") : '') text name end - _render_inner_content &Proc.new if block_given? + _render_inner_content(&block) if block_given? end end @@ -131,19 +131,19 @@ def next_step name end end - def situation name + def situation name, &block h1 name - _render_inner_content &Proc.new if block_given? + _render_inner_content(&block) if block_given? end - def option name + def option name, &block num = next_step_number a(:name => "step#{current_anchor_num}") h1 :class => "option" do span I18n.t("general.option", :num => num) text name end - _render_inner_content &Proc.new if block_given? + _render_inner_content(&block) if block_given? end def option_half title diff --git a/spec/app_deck_spec.rb b/spec/app_deck_spec.rb index 27c30efba..2a375105f 100644 --- a/spec/app_deck_spec.rb +++ b/spec/app_deck_spec.rb @@ -41,4 +41,4 @@ def app expect(last_response.body).to include("/* Code ray css */") end end -end \ No newline at end of file +end diff --git a/spec/site_syntax_spec.rb b/spec/site_syntax_spec.rb index 9153deed7..d82950982 100644 --- a/spec/site_syntax_spec.rb +++ b/spec/site_syntax_spec.rb @@ -1,3 +1,4 @@ +require "cgi" require "spec_helper" require_relative "../app" @@ -29,7 +30,7 @@ def app site.docs.each do |doc| it "renders #{doc.filename}" do - path = URI.escape "/#{site.name}/#{doc.name}" + path = CGI.escape "/#{site.name}/#{doc.name}" get path, locale: locale if (last_response.status != 200) errors = last_response.errors