
关于
配置 Rails 项目以使用 Conductor(并行编码代理)。
name: conductor-setup description: 配置Rails项目以使用Conductor(并行编码代理) allowed-tools: Bash(chmod *), Bash(bundle *), Bash(npm *), Bash(script/server) context: fork risk: unknown source: community metadata: author: Shpigford version: "1.0"
为Conductor(Mac并行编码代理应用)设置此Rails项目。
何时使用
- 你需要配置Rails项目使其在Conductor工作区内正确运行。
- 项目应支持具有隔离端口、Redis设置和共享密钥的并行编码代理。
- 你需要为Rails仓库搭建标准的
conductor.json、bin/conductor-setup和script/server脚手架。
需要创建的内容
1. conductor.json(项目根目录)
如果不存在,在项目根目录创建 conductor.json:
{
"scripts": {
"setup": "bin/conductor-setup",
"run": "script/server"
}
}
2. bin/conductor-setup(可执行文件)
如果不存在,创建 bin/conductor-setup:
#!/bin/bash
set -e
# Symlink .env from repo root (where secrets live, outside worktrees)
[ -f "$CONDUCTOR_ROOT_PATH/.env" ] && ln -sf "$CONDUCTOR_ROOT_PATH/.env" .env
# Symlink Rails master key
[ -f "$CONDUCTOR_ROOT_PATH/config/master.key" ] && ln -sf "$CONDUCTOR_ROOT_PATH/config/master.key" config/master.key
# Install dependencies
bundle install
npm install
使用 chmod +x bin/conductor-setup 使其可执行。
3. script/server(可执行文件)
如需创建 script 目录,然后如果不存在则创建 script/server:
#!/bin/bash
# === Port Configuration ===
export PORT=${CONDUCTOR_PORT:-3000}
export VITE_RUBY_PORT=$((PORT + 1000))
# === Redis Isolation ===
if [ -n "$CONDUCTOR_WORKSPACE_NAME" ]; then
HASH=$(printf '%s' "$CONDUCTOR_WORKSPACE_NAME" | cksum | cut -d' ' -f1)
REDIS_DB=$((HASH % 16))
export REDIS_URL="redis://localhost:6379/${REDIS_DB}"
fi
exec bin/dev
使用 chmod +x script/server 使其可执行。
4. 更新Rails配置文件
对于以下每个文件,如果存在且包含Redis配置,更新它们使用 ENV.fetch('REDIS_URL', ...) 或 ENV['REDIS_URL'] 并带回退值:
config/initializers/sidekiq.rb
如果此文件存在且配置了Redis,更新为使用:
redis_url = ENV.fetch('REDIS_URL', 'redis://localhost:6379/0')
config/cable.yml
如果此文件存在,更新开发适配器为使用:
development:
adapter: redis
url: <%= ENV.fetch('REDIS_URL', 'redis://localhost:6379/1') %>
config/environments/development.rb
如果此文件配置了Redis缓存,更新为使用:
config.cache_store = :redis_cache_store, { url: ENV.fetch('REDIS_URL', 'redis://localhost:6379/0') }
config/initializers/rack_attack.rb
如果此文件存在且配置了Redis缓存存储,更新为使用:
Rack::Attack.cache.store = ActiveSupport::Cache::RedisCacheStore.new(url: ENV.fetch('REDIS_URL', 'redis://localhost:6379/0'))
实现注意事项
- 不要覆盖现有文件:创建前检查conductor.json、bin/conductor-setup和script/server是否存在。如果存在,跳过创建并通知用户。
- Rails配置更新:仅修改Redis相关配置。如果文件不存在或不使用Redis,优雅地跳过。
- 按需创建目录:如果
script/目录不存在则创建。
验证
创建文件后:
- 确认所有Conductor文件存在且脚本可执行
- 运行
script/server验证启动无错误 - 检查Rails配置正确引用了
ENV['REDIS_URL']或ENV.fetch('REDIS_URL', ...)
限制
- 仅在任务明确匹配上述范围时使用本技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少所需输入、权限、安全边界或成功标准,请停下来要求澄清。
兼容工具
Claude CodeCursor
标签
AI与机器学习