TheForeman项目开发环境搭建指南

TheForeman项目开发环境搭建指南

foreman an application that automates the lifecycle of servers foreman 项目地址: https://gitcode.com/gh_mirrors/forem/foreman

前言

TheForeman是一个开源的服务器生命周期管理工具,它提供物理和虚拟服务器的自动化管理能力。对于开发者而言,搭建一个本地的开发环境是参与项目开发的第一步。本文将详细介绍如何在本地环境中从源代码安装和配置TheForeman项目。

环境准备

系统要求

在开始安装前,需要确保系统满足以下基本要求:

  • Ruby版本:建议使用2.7.6版本
  • NodeJS:需要安装NodeJS以支持前端构建
  • PostgreSQL:推荐使用12或更高版本作为数据库后端
  • 开发工具:包括gcc、git等基础开发工具

不同系统的安装方法

Fedora系统

Fedora自带的Ruby版本可能过高,建议使用rbenv管理Ruby版本:

sudo dnf install rbenv ruby-build-rbenv nodejs
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
rbenv install 2.7.6
Enterprise Linux 8系统

EL8默认提供的软件包版本较低,需要启用新版本模块:

dnf module enable ruby:2.7
dnf module enable postgresql:12
dnf module enable nodejs:14

然后安装开发工具包:

dnf groupinstall "Development Tools" "Development Libraries"
dnf -y install gcc-c++ git ruby ruby-devel rubygem-bundler \
    libvirt-devel postgresql-devel openssl-devel \
    libxml2-devel libxslt-devel zlib-devel \
    readline-devel systemd-devel tar libcurl-devel nodejs

PostgreSQL安装配置

对于基于RPM的系统,PostgreSQL安装步骤如下:

sudo dnf install postgresql-server
sudo postgresql-setup --initdb
sudo systemctl enable --now postgresql
sudo -u postgres createuser --createdb $USER

项目设置

获取源代码

首先需要克隆项目仓库:

git clone {你的仓库地址}/foreman.git -b develop
cd foreman
cp config/settings.yaml.example config/settings.yaml
cp config/database.yml.example config/database.yml

Ruby环境配置

如果使用rbenv,可以设置本地Ruby版本:

rbenv local 2.7.6

安装依赖

安装项目所需的Ruby和NodeJS依赖:

bundle install
npm install

常见问题处理

  1. 安装pg gem失败时,可以尝试指定pg_config路径:
gem install pg -v '{PG_VERSION}' -- --with-pg-config=/usr/pgsql-13/bin/pg_config
  1. ruby-libvirt gem报错时,可能需要设置PKG_CONFIG_PATH:
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig

数据库配置

数据库初始化

确保config/database.yml中development部分的配置正确后,执行:

bundle exec rake db:create
bundle exec rake db:migrate
SEED_ADMIN_PASSWORD=changeme bundle exec rake db:seed

对于测试环境,还需要额外执行:

RAILS_ENV=test bundle exec rake db:create
RAILS_ENV=test bundle exec rake db:migrate

运行Foreman

基本运行方式

最简单的启动方式是:

bundle exec foreman start

分离运行模式

为了提高开发效率,可以将前端和Rails分开运行:

# 启动Rails服务
bundle exec rails s -b 0.0.0.0 -p 3000

# 启动前端构建
bundle exec foreman start webpack

环境变量配置

可以通过.env文件自定义环境变量,常用选项包括:

  • REDUX_LOGGER:控制是否在控制台打印Redux调用
  • NOTIFICATIONS_POLLING:设置通知轮询间隔(毫秒)
  • NODE_OPTIONS:用于npm操作的NodeJS选项

开发辅助功能

密码重置

忘记管理员密码时可以通过以下命令重置:

bundle exec rake permissions:reset password=changeme

模拟数据生成

生成测试用模拟数据:

bundle exec rake seed:forgeries

查看所有rake任务

bundle exec rake -T

测试相关

RuboCop测试

运行代码风格检查:

bundle exec rubocop [<文件路径>]

自动修复可安全修复的问题:

bundle exec rubocop --auto-correct

单元测试

运行所有测试:

bundle exec rake test [TEST=<文件路径>]

运行特定测试:

bundle exec rails test <文件路径>:<测试行号>

集成测试

集成测试需要ChromeDriver支持。运行前需要编译前端资源:

npm install
bundle exec rake webpack:compile
bundle exec rake test TEST=test/integration/<测试文件> [DEBUG_JS_TEST=1]

调试技巧:

  • 添加DEBUG_JS_TEST=1可以在浏览器中运行测试
  • 添加SHOW_JS_LOG=1可以查看所有JavaScript日志

调试技巧

使用Pry调试

Pry是一个强大的Ruby调试工具,在代码中插入:

require 'pry'; binding.pry

常用命令:

  • step:单步进入方法
  • next:单步跳过方法
  • finish:执行到当前方法结束
  • continue:继续执行

插件开发

安装插件

从本地源码安装:

echo "gem '<插件名>', path: '../插件路径'" >> bundler.d/<插件名>.local.rb

从远程仓库安装:

echo "gem '<插件名>', git: '插件仓库地址'" >> bundler.d/<插件名>.local.rb

安装后执行:

bundle install
bundle exec rake db:migrate
bundle exec rake db:seed

插件测试

运行插件所有测试:

npm install
bundle exec rake webpack:compile
bundle exec rake test:<插件名>

运行特定测试:

bundle exec rake test TEST="../<插件路径>/test/测试路径"

结语

通过本文的指导,您应该已经成功搭建了TheForeman的开发环境。这套环境不仅支持基本的开发工作,还提供了完整的测试和调试工具链,为后续的代码贡献和功能开发奠定了坚实基础。在开发过程中,如果遇到任何问题,可以参考项目文档或社区资源寻求帮助。

foreman an application that automates the lifecycle of servers foreman 项目地址: https://gitcode.com/gh_mirrors/forem/foreman

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

舒林艾Natalie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值