From 47982ccb0161b180beb36199d3c57497a7567b0d Mon Sep 17 00:00:00 2001 From: eggplants Date: Thu, 26 Dec 2024 21:57:32 +0900 Subject: [PATCH 1/3] Add compose file --- Dockerfile | 7 ++++--- README.md | 15 +++++++++++---- compose.yaml | 8 ++++++++ 3 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 compose.yaml diff --git a/Dockerfile b/Dockerfile index 58caf7cc..ba2c85b2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,10 @@ ## Building image ## FROM ruby:3.0.3-slim-bullseye AS builder -WORKDIR /app # install build dependencies RUN apt update && apt install make gcc g++ libffi-dev nodejs git -y -COPY . . +COPY ./Gemfile /app/Gemfile +COPY ./Gemfile.lock /app/Gemfile.lock +WORKDIR /app RUN bundle install EXPOSE 4567 -CMD ["bin/middleman", "serve"] \ No newline at end of file +CMD ["bin/middleman", "serve"] diff --git a/README.md b/README.md index 37377210..8f10f6f6 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ where you can learn the Ruby language. Starting from zero knowledge about programming you can learn the basics of Ruby in 56 short lessons. ## Credits + Try Ruby version 1 by _why the lucky stiff_ Try Ruby version 2 by _Andrew McElroy & David Miani_ Try Ruby version 3 by _Eric Allam & Nick Walsh_ @@ -13,6 +14,7 @@ Try Ruby version 4 by _Ivo Herweijer_ This website is partially based on OpalRb.com by _Adam Beynon_. ### Translations + Spanish translation by _Jesus Gabriel y Galan_ & _Pablo García_ Dutch translation by [_Ivo Herweijer_](https://github.com/easydatawarehousing) Brazilian Portuguese translation by [_Ricardo da Verdade Silva_](https://github.com/ricardovsilva) @@ -31,20 +33,23 @@ not the json files in folder _source_. These files will be updated automatically by the build/publish task. ## Frontend website + The TryRuby is kind of unique in a way, that it is a frontend application created in Ruby with [Opal](https://opalrb.com/). The source code for this application is located in `app` directory. ## Docker + You can deploy the website using docker by running the following commands: + ``` -# creating the image -docker build -f Dockerfile . -t tryruby -# running the image, you can access tryruby on http://localhost:9099 -docker run -p 9099:4567 -d tryruby:latest +docker compose up ``` +Then visit `http://localhost:9099`. + ## Preparing + Clone this repo, and use bundler to get dependencies: $ bundle install @@ -70,9 +75,11 @@ Git branch 'gh-pages' now holds the publishable version of TryRuby, accessible via [try.ruby-lang.org/](https://try.ruby-lang.org/). ## Translators + When adding a new translation: see the README file in /translations. ## Why + See the website [try-ruby-version-4](https://try.ruby-lang.org/articles/try-ruby-version-4/) for more background information on how and why this website was created. diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 00000000..ef987004 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,8 @@ +services: + web: + build: . + image: tryruby:latest + ports: + - "9099:4567" + volumes: + - .:/app From a4692d37c85ee29dbed5195e4717e125ba625354 Mon Sep 17 00:00:00 2001 From: haruna Date: Thu, 26 Dec 2024 20:23:23 +0900 Subject: [PATCH 2/3] Update wasm-wasi from 0.5.0 to 2.4.1 and Add CRuby 3.3 --- app/ruby_engine.rb | 17 ++++++++--------- app/ruby_engine/cruby_wasi.rb | 31 ++++++++++++++++--------------- app/try_ruby.rb | 2 +- spec/playground_spec.rb | 2 +- 4 files changed, 26 insertions(+), 26 deletions(-) diff --git a/app/ruby_engine.rb b/app/ruby_engine.rb index 94cceedf..a13ec929 100644 --- a/app/ruby_engine.rb +++ b/app/ruby_engine.rb @@ -39,17 +39,16 @@ def loading(part = nil) # When you update the engines, ensure that they are tested correctly. # Update the engine list also in spec/playground_spec. ENGINES = [ + # https://www.jsdelivr.com/package/npm/@ruby/3.2-wasm-wasi?tab=files&path=dist&version=2.4.1 CRubyWASI.new( - "https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@0.5.0-2022-12-25-a/dist/ruby.wasm", - "3.2.0" + "https://cdn.jsdelivr.net/npm/@ruby/3.2-wasm-wasi@2.4.1/dist/ruby.wasm", + "3.2.2" + ), + # https://www.jsdelivr.com/package/npm/@ruby/3.3-wasm-wasi?tab=files&path=dist&version=2.4.1 + CRubyWASI.new( + "https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.4.1/dist/ruby.wasm", + "3.3.0" ), - # FIXME(katei): Head build is no longer compatible with ruby-head-wasm-wasi@0.5.0, - # so we should have a worker for each version of CRuby to load corresponding ruby-*-wasm-wasi - # CRubyWASI.new( - # "https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@next/dist/ruby.wasm", - # "3.3.0dev" - # ), - # Opal.new, OpalWebWorker.new("1.7.1"), ].each_with_object({}) do |engine, hash| diff --git a/app/ruby_engine/cruby_wasi.rb b/app/ruby_engine/cruby_wasi.rb index 0ec0fd56..99c7bb57 100644 --- a/app/ruby_engine/cruby_wasi.rb +++ b/app/ruby_engine/cruby_wasi.rb @@ -5,21 +5,22 @@ class RubyEngine class CRubyWASI < RubyEngine REQUIRED_SCRIPTS = [ - { - src: "https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@0.5.0/dist/index.umd.js", - integrity: "sha256-EVJ2qiXD74E5qZpFm9MMNqOf5Buo+P2VQKiqOzOKGpg=", - crossorigin: "anonymous" - }, - { - src: "https://cdn.jsdelivr.net/npm/@wasmer/wasmfs@0.12.0/lib/index.iife.js", - integrity: "sha256-sOd4ekxVsN4PXhR+cn/4uNAxeQOJRcsaW5qalYfvkTw=", - crossorigin: "anonymous" - }, - { - src: "https://cdn.jsdelivr.net/npm/@wasmer/wasi@0.12.0/lib/index.iife.js", - integrity: "sha256-FslFp/Vq4bDf2GXu+9QyBEDLtEWO3fkMjpyOaJMHJT8=", - crossorigin: "anonymous" - } + { + # https://www.jsdelivr.com/package/npm/@ruby/wasm-wasi?version=2.4.1&tab=files&path=dist + src: "https://cdn.jsdelivr.net/npm/@ruby/wasm-wasi@2.4.1/dist/index.umd.js", + integrity: "sha256-300VwPu5WqY+8LDKdE4RQwDglgJSpMtLFLgyf508bv0=", + crossorigin: "anonymous" + }, + { + src: "https://cdn.jsdelivr.net/npm/@wasmer/wasmfs@0.12.0/lib/index.iife.js", + integrity: "sha256-sOd4ekxVsN4PXhR+cn/4uNAxeQOJRcsaW5qalYfvkTw=", + crossorigin: "anonymous" + }, + { + src: "https://cdn.jsdelivr.net/npm/@wasmer/wasi@0.12.0/lib/index.iife.js", + integrity: "sha256-FslFp/Vq4bDf2GXu+9QyBEDLtEWO3fkMjpyOaJMHJT8=", + crossorigin: "anonymous" + } ] def initialize(ruby_wasm_url, version) diff --git a/app/try_ruby.rb b/app/try_ruby.rb index 2cf7f63c..b025ce88 100644 --- a/app/try_ruby.rb +++ b/app/try_ruby.rb @@ -15,7 +15,7 @@ class TryRuby RUBY INITIAL_TRY_RESULT = 'Welcome ' * 3 - DEFAULT_RUBY_ENGINE = "cruby-3.2.0" + DEFAULT_RUBY_ENGINE = "cruby-3.2.2" def self.start instance diff --git a/spec/playground_spec.rb b/spec/playground_spec.rb index 74fb7737..27cbb75c 100644 --- a/spec/playground_spec.rb +++ b/spec/playground_spec.rb @@ -2,7 +2,7 @@ RSpec.describe "Playground", type: :feature, js: true do context "engine" do - engines = ["opal-ww-1.7.1", "cruby-3.2.0"] + engines = ["opal-ww-1.7.1", "cruby-3.2.2", "cruby-3.3.0"] engines.each do |engine| context engine do before :each do From 2ef448a13a1c3f74ddbdcbb86faa6d23f2e86639 Mon Sep 17 00:00:00 2001 From: eggplants Date: Fri, 27 Dec 2024 00:08:16 +0900 Subject: [PATCH 3/3] Fix expected value in step 9 --- translations/de/try_ruby_90.md | 2 +- translations/en/try_ruby_90.md | 2 +- translations/es/try_ruby_90.md | 2 +- translations/ja/try_ruby_90.md | 2 +- translations/mk/try_ruby_90.md | 2 +- translations/nl/try_ruby_90.md | 2 +- translations/pt-br/try_ruby_90.md | 2 +- translations/ru/try_ruby_90.md | 2 +- translations/tr/try_ruby_90.md | 2 +- translations/ua/try_ruby_90.md | 2 +- translations/zh/try_ruby_90.md | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/translations/de/try_ruby_90.md b/translations/de/try_ruby_90.md index d70b33b4..50a4dbf0 100644 --- a/translations/de/try_ruby_90.md +++ b/translations/de/try_ruby_90.md @@ -1,7 +1,7 @@ --- lang: DE title: Hey, schon die Zusammenfassung #1 -answer: NoMethodError|undefined +answer: NoMethodError|undefined|-e:in `eval' class: stretcher chapmark ok: Nö, es ist nicht möglich, eine Nummer umzukehren. Klick auf 'Next' error: diff --git a/translations/en/try_ruby_90.md b/translations/en/try_ruby_90.md index 168b15d9..9d5ad758 100644 --- a/translations/en/try_ruby_90.md +++ b/translations/en/try_ruby_90.md @@ -1,7 +1,7 @@ --- lang: EN title: Hey, Summary #1 Already -answer: NoMethodError|undefined +answer: NoMethodError|undefined|-e:in `eval' class: stretcher chapmark ok: Nope, it is not possible to reverse a number. Click 'next' error: diff --git a/translations/es/try_ruby_90.md b/translations/es/try_ruby_90.md index 1ba0b0e2..2ebec777 100644 --- a/translations/es/try_ruby_90.md +++ b/translations/es/try_ruby_90.md @@ -1,7 +1,7 @@ --- lang: ES title: Ey, Sumario #1 Ya -answer: NoMethodError|undefined +answer: NoMethodError|undefined|-e:in `eval' class: stretcher chapmark ok: Nop, no es posible dar la vuelta a un número. Pulsa 'next' error: diff --git a/translations/ja/try_ruby_90.md b/translations/ja/try_ruby_90.md index cf49e482..8dc52f8d 100644 --- a/translations/ja/try_ruby_90.md +++ b/translations/ja/try_ruby_90.md @@ -1,7 +1,7 @@ --- lang: JA title: このくらいで要約(その1)にしましょう -answer: NoMethodError|undefined +answer: NoMethodError|undefined|-e:in `eval' class: stretcher chapmark ok: いいえ、数を逆さまにはできません。'Next'を押してください error: diff --git a/translations/mk/try_ruby_90.md b/translations/mk/try_ruby_90.md index 463966c6..aad49cba 100644 --- a/translations/mk/try_ruby_90.md +++ b/translations/mk/try_ruby_90.md @@ -1,7 +1,7 @@ --- lang: MK title: Резиме на делот #1. Толку брзо?! -answer: NoMethodError|undefined +answer: NoMethodError|undefined|-e:in `eval' class: stretcher chapmark ok: Не, не е можно да го прикажеш бројот во обратен редослед. Кликни 'Next' error: diff --git a/translations/nl/try_ruby_90.md b/translations/nl/try_ruby_90.md index 52698674..3993798d 100644 --- a/translations/nl/try_ruby_90.md +++ b/translations/nl/try_ruby_90.md @@ -1,7 +1,7 @@ --- lang: NL title: Je hebt samenvatting 1 bereikt -answer: NoMethodError|undefined +answer: NoMethodError|undefined|-e:in `eval' class: stretcher chapmark ok: Nee, nummers kan je niet omdraaien. Klik 'next' error: diff --git a/translations/pt-br/try_ruby_90.md b/translations/pt-br/try_ruby_90.md index f497f829..102f85b8 100644 --- a/translations/pt-br/try_ruby_90.md +++ b/translations/pt-br/try_ruby_90.md @@ -1,7 +1,7 @@ --- lang: PT-BR title: Ei, Sumário #1 Pronto -answer: NoMethodError|undefined +answer: NoMethodError|undefined|-e:in `eval' class: stretcher chapmark ok: Não, não é possível inverter um número. Clique em __next__ para continuar error: diff --git a/translations/ru/try_ruby_90.md b/translations/ru/try_ruby_90.md index f3f857f5..8238ef22 100644 --- a/translations/ru/try_ruby_90.md +++ b/translations/ru/try_ruby_90.md @@ -1,7 +1,7 @@ --- lang: RU title: Подводим итоги #1 Уже -answer: NoMethodError|undefined +answer: NoMethodError|undefined|-e:in `eval' class: stretcher chapmark ok: Неа, нельзя использовать метод reverse с числом. Жми 'next' error: diff --git a/translations/tr/try_ruby_90.md b/translations/tr/try_ruby_90.md index d9a1bea9..bcc3e5cd 100644 --- a/translations/tr/try_ruby_90.md +++ b/translations/tr/try_ruby_90.md @@ -1,7 +1,7 @@ --- lang: TR title: Hey, Özet #Şimdiden 1 Numara -answer: NoMethodError|undefined +answer: NoMethodError|undefined|-e:in `eval' class: stretcher chapmark ok: Yoo, bir numarayı ters çevirmek mümkün değil ki. 'next' butonuna bas error: diff --git a/translations/ua/try_ruby_90.md b/translations/ua/try_ruby_90.md index ec64a1d8..805d9a27 100644 --- a/translations/ua/try_ruby_90.md +++ b/translations/ua/try_ruby_90.md @@ -1,7 +1,7 @@ --- lang: UA title: Підсумки #1 Вже -answer: NoMethodError|undefined +answer: NoMethodError|undefined|-e:in `eval' class: stretcher chapmark ok: Ні, неможливо розгорнути число. Натисни 'next' error: diff --git a/translations/zh/try_ruby_90.md b/translations/zh/try_ruby_90.md index a01fc472..d8d1f47a 100644 --- a/translations/zh/try_ruby_90.md +++ b/translations/zh/try_ruby_90.md @@ -1,7 +1,7 @@ --- lang: ZH title: 总结(第一部分)就到此为止! -answer: NoMethodError|undefined +answer: NoMethodError|undefined|-e:in `eval' class: stretcher chapmark ok: 不不不,你不能逆置一个数字,点击‘Next’来继续 error: