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