最新の開発環境を維持する

新しい開発マシンを設定しようとしていますが、bundler がありません。https://raw.githubusercontent.com/discourse/install-rails/master/linux を見ると、まだ ruby_version="2.7.6" をインストールしています。そして、そのスクリプトを再実行しても、開発マシンを更新する信頼性の高い方法とは思えません。

他の人はどのようにしていますか?本当に Install Discourse for development using Docker を使用しているのでしょうか?

ダッシュボードを開発するために、pfaffmanager-discourse スクリプトを使用してコマンドラインで多くの設定を渡しています。このスクリプトは、最新の Discourse をプルしてデータベースを移行します。Docker バージョンでも何とかそれを実現できると思います。

ネイティブな開発インスタンスを持つべきだという考えは古いのでしょうか、それとも Docker で開発するべきなのでしょうか?

新しいマシンを設定するために Ansible を常に使用していますが、そのセットアップで不足しているのは Discourse 開発スクリプトだけです。他にそのようなものを必要とする人はいますか? Ruby や imagemagick などを適切なバージョンで取得するために、それをコアに移動して、Discourse をクローンしてからプレイブックを実行できるようにすることはできますか?

「いいね!」 1

私の知る限り、開発チームのほとんど全員がネイティブ開発環境を使用しています。

私は、使用する多くのツールを管理するためにasdfを使用しているので、私にとっては、新しいRubyでDiscourseを実行するために

asdf install ruby 3.1.3
asdf local ruby 3.1.3

を実行するだけです。

Discourseをルビー間でベンチマークし、ルビーのアップグレードを処理しているので、これは私にとって非常に役立ちます。

「いいね!」 5

ひとまずDocker Composeソリューションに移行し、現在取り組んでいるDiscourseのビルドはDockerfileで決定しています。基本的なものであれば今のところうまく機能していますが、当然ながら直接「ベアメタル」のUbuntu環境よりも少し遅いです…

「いいね!」 2

オフオントピックですが、YJITには非常に感銘を受けています!!.. Discourse はすでに Ruby 3.2 を完全にサポートしていますか?

「いいね!」 4

何か秘密のリポジトリがあって、そこで皆が最新の状態を保っているのですか?

ありがとうございます!asdfは非常に役立ちます!以前にも見たことがあるような気がしますが、また別のパッケージマネージャーを避けたいと思っていました。あなたが十分だとおっしゃるなら、私も全面的に賛成です。

また、インストールスクリプトでもnodejsが古いようです。最近のインストールではv18.12.1ですが、スクリプトは16をインストールします。

したがって、以下のようになります。

          git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.2
          asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git
          asdf plugin add imagemagick
          asdf install imagemagick 7.1.0-55
          asdf plugin add nodejs
          asdf install nodejs 18.12.1

これが(何らかの方法で).bashrc(またはそれに類するもの)に含まれていると仮定します。

. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash

そして、これらのgemをインストールします。

      - bundler
      - discourse_theme
      - minitar
      - listen
      - rb-fsevent
      - rb-inotify
      - ffi
      - multipart-post
      - tty-prompt
      - pastel
      - tty-color
      - tty-reader
      - tty-screen
      - advancecomp
      - gifsicle
      - jpegoptim
      - libjpeg-progs
      - optipng
      - pngcrush
      - pngquant
      - jhead
      - rails

これらのうちいくつかは、Discourse以外の理由で追加したかもしれませんが、よくわかりません。

そして

apt-get install -y git build-essential libxslt1-dev libcurl4-openssl-dev libksba8 \
libksba-dev libreadline-dev libssl-dev zlib1g-dev libsnappy-dev \
sqlite3 libsqlite3-dev postgresql postgresql-server-dev-all \
postgresql-contrib libpq-dev redis-server golang-go
go get github.com/mailhog/MailHog

(おそらくその順序ではありません)でかなり近くなります。現在のUbuntuに含まれているredisは、開発者の99%には十分です~~(7.0.7であり、6.xではありません)~~おっと!7.0.7が現在含まれています。しかし、redis用のasdfプラグインもあります。

このようなスクリプトは、node、imagemagick、またはRubyのバージョンが更新されたときにコアで簡単に維持でき、怠惰な開発者はそのスクリプトを週に1回、または新しいプルごとに実行して、最新の開発環境を手に入れることができます。1〜3時間あれば、誰かが賢くLinux、Mac/homebrew、およびWindows/WSLでクロスプラットフォームで動作するように数時間で作成できるでしょう。幸いなことに、私は最近Windowsに簡単にアクセスできないので、ボランティアはしません。

しかし、discourse_dockerの変更を監視すれば、それらがいつ更新されたかに気づき、私のnewmachine ansibleプレイブックにハッキングした追加機能が役立つかもしれないと思います。

ヒントをありがとうございます!これで、単一のコマンドでどのマシンでも開発セットアップができるようになったと思います。

「いいね!」 1

すべてが自動的に処理されるようにできたら素晴らしいと思いますが、開発環境やアップデートなどを自分で管理することは、私にとって仕事の不可欠な部分です。

新規参入者にとっては大変ですが、GitHub Codespacesのようなツールが役立つのはまさにその点です。しかし、日々Discourseの開発に深く関わっている者にとっては、開発環境を理解し、操作できることが、各部分がどのように組み合わさっているかを理解するのに役立ちます。

「いいね!」 2

まあ、Rubyのベンチマークをしている人は典型的な開発者とは程遠いですが、それも納得です!結局のところ、物事を管理する方法は人それぞれですからね。

asdfを勧めてくれてありがとう。それがあれば、色々なマシンで物事を整理できると思います。

「いいね!」 1

私はすでに3.1プッシュで互換性の作業のほとんどを行ったので、3.2への移行はすべて準備ができており、まもなく行う予定です。

「いいね!」 4

Falco、これを確認してもらえますか?:

rake dev:populate

がエラーを発生させるようになりました:

Psych::DisallowedClass: Tried to load unspecified class: Date

これは新しいRubyまたはRailsのバージョンに関連していますか?

詳細:

new YJIT で TTFB がどの程度改善されるか気になります

「いいね!」 1

この問題は、修正してくれた方のおかげで最新版で解決したようです! :pray: これは、テストフィクスチャを効率的に構築するのに役立つ重要な機能です。

「いいね!」 1

このトピックは、最後の返信から30日後に自動的にクローズされました。新しい返信は許可されていません。