pfaffman
(Jay Pfaffman)
1
我正在尝试设置一个新的开发机器,但缺少 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 开发脚本。其他人会想要这样的东西吗?我们可以将其移至核心,以便您可以只克隆 discourse,然后运行一个 playbook 来获取正确版本的 Ruby 和 imagemagick 以及其他任何东西吗?
Falco
(Falco)
2
据我所知,开发团队中的几乎每个人都使用本地开发环境。
我一直在使用 asdf 来管理我使用的许多工具的版本,所以对我来说,只需要
asdf install ruby 3.1.3
asdf local ruby 3.1.3
即可在新 Ruby 中运行 Discourse。
对我来说非常有用,因为 我一直在对不同 Ruby 版本的 Discourse 进行基准测试 并处理 Ruby 升级。
我暂时迁移到了 Docker Compose 解决方案,并使用 Dockerfile 来构建我正在开发的 Discourse。对于基本功能,目前运行良好,但显然比直接在“裸金属”Ubuntu 环境中运行要慢一些……
RGJ
(Richard - Communiteq)
4
离题了,是的,我对 YJIT !! 印象深刻……Discourse 已经完全支持 Ruby 3.2 了吗?
pfaffman
(Jay Pfaffman)
5
他们是否使用某个秘密仓库来保持更新?
谢谢!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 的版本更新时,在核心中会很容易维护,然后一个懒惰的开发者可以每周或每次拉取一次来运行该脚本,就能拥有一个最新的开发环境。花一两个小时,一个聪明的人就可以将其做得足够跨平台,支持 Linux、Mac/homebrew 和 Windows/WSL。我很庆幸现在无法轻松访问 Windows,所以我不打算 volunteered。
但我认为,如果我关注 discourse_docker 的变化,我可能会注意到它们何时更新,而我为我的 newmachine ansible playbook 添加的那些临时修改现在可能可以完成这项工作。
谢谢你的建议!我认为我现在可以通过一个命令在任何机器上设置开发环境了。
Falco
(Falco)
6
虽然我明白让所有东西自动处理有多酷,但对我来说,管理我的开发环境、更新等是工作的重要组成部分。
这对新人来说很糟糕,而像 GitHub Codespaces 这样的工具在这方面大放异彩,但对于每天沉浸在 Discourse 开发中的人来说,理解和能够操作开发环境有助于了解各个部分是如何协同工作的。
pfaffman
(Jay Pfaffman)
7
嗯,进行 Ruby 基准测试的那个人远非典型的开发者,但说得有理!我想我们管理事物的方式都有点不同。
多亏了你推荐的 asdf,我想有了它,我就能在我不同的机器上保持条理清晰了。
Falco
(Falco)
8
我已经完成了大部分 3.1 的兼容性工作,所以我们已经为 3.2 的更新做好了准备,并将很快完成。
Falco,我能和你确认一下这个吗?:
rake dev:populate
现在似乎会产生一个错误:
Psych::DisallowedClass: Tried to load unspecified class: Date
这与新的 Ruby 或 Rails 版本有关吗?
更多信息:
volanar
(Volanar)
10
我很好奇 新的 YJIT 能将 TTFB 提高多少
此问题在最新版本中已解决,感谢修复它的人!
这是一个帮助高效构建测试夹具的关键功能。