Author: admin

  • Bundler::PermissionError

    
     Retrying download gem from https://rubygems.org/ due to error (2/4): Bundler::PermissionError There was an error while trying to write to `/opt/homebrew/lib/ruby/gems/3.4.0/cache/rake-13.3.0.gem`. It is likely that you need to grant write permissions for that path.

    这个错误是由于权限不足导致的:Bundler 尝试将 gem 写入 `/opt/homebrew/lib/ruby/gems/3.4.0/cache/` 目录,但当前用户没有该路径的写入权限。这通常是因为你使用的 Ruby 是通过 Homebrew 安装的系统级 Ruby,而非 `rbenv` 管理的用户级 Ruby(后者会导致权限问题)。

    ### 解决方法:

    #### 1. 推荐方案:使用 `rbenv` 管理的 Ruby(避免权限问题)
    既然你已经安装了 `rbenv`,建议优先使用 `rbenv` 安装的 Ruby 版本(用户目录内,无需 `sudo` 权限):

    “`bash
    # 1. 安装一个 rbenv 管理的 Ruby 版本(以 3.3.0 为例)
    rbenv install 3.3.0

    # 2. 设置为全局默认版本(或进入项目目录用 rbenv local 设为项目版本)
    rbenv global 3.3.0

    # 3. 刷新垫片
    rbenv rehash

    # 4. 验证当前 Ruby 路径(确保指向 ~/.rbenv/versions/…)
    which ruby # 应输出类似 ~/.rbenv/shims/ruby

    # 5. 重新安装 bundler 并执行 bundle install
    gem install bundler –no-document
    bundle install
    “`

    #### 2. 临时方案:授予目录写入权限(不推荐,可能带来安全风险)
    如果暂时需要使用 Homebrew 安装的 Ruby,可以手动授予权限(不建议长期使用,可能导致系统级文件冲突):

    “`bash
    # 授予当前用户对 Homebrew Ruby 目录的写入权限
    sudo chown -R $(whoami) /opt/homebrew/lib/ruby/gems/3.4.0/

    # 之后再尝试安装
    bundle install
    “`

    ### 关键原因说明:
    – Homebrew 安装的 Ruby 属于系统级目录(`/opt/homebrew/`),默认需要管理员权限才能写入,直接使用可能频繁遇到权限问题。
    – `rbenv` 安装的 Ruby 位于用户目录(`~/.rbenv/`),无需 `sudo`,且版本隔离更彻底,是 Ruby 开发的推荐方式。

    建议采用方案 1,从根本上避免权限问题。

  • ruby-build

    `ruby-build` 是一个用于编译和安装 Ruby 版本的工具,常作为 `rbenv` 的插件使用(也可独立运行),简化了从源码安装不同 Ruby 版本的过程。它支持多种 Ruby 发行版(如 MRI、JRuby、Rubinius 等),并自动处理编译依赖和配置,让安装过程更高效。

    ### **主要功能**
    1. **一键安装特定 Ruby 版本**:无需手动下载源码、配置编译参数,直接通过版本号安装。
    2. **支持多类型 Ruby**:包括官方 MRI Ruby、JRuby(基于 JVM)、TruffleRuby 等。
    3. **自动处理依赖**:检测并提示缺失的系统库(如 `openssl`、`readline` 等),减少编译失败。
    4. **与 rbenv 无缝集成**:安装的 Ruby 版本会自动被 `rbenv` 识别,无需手动配置路径。

    ### **常用命令**
    作为 `rbenv` 插件时,命令通过 `rbenv` 调用:
    1. **查看可安装的 Ruby 版本**
    “`bash
    rbenv install –list # 列出所有可用版本
    rbenv install –list | grep 3.3 # 过滤特定大版本(如 3.3.x)
    “`

    2. **安装指定版本**
    “`bash
    rbenv install 3.3.0 # 安装 Ruby 3.3.0
    rbenv install jruby-9.4.5.0 # 安装 JRuby
    “`

    3. **卸载已安装的版本**
    “`bash
    rbenv uninstall 3.2.2 # 卸载指定版本
    “`

    4. **升级 ruby-build 本身**
    若通过包管理器安装,直接更新:
    “`bash
    # Homebrew(macOS/Linux)
    brew upgrade ruby-build

    # Git 源码安装(手动更新)
    cd ~/.rbenv/plugins/ruby-build
    git pull
    “`

    ### **安装方法**
    #### 1. 作为 rbenv 插件(推荐)
    – **通过 Homebrew(macOS/Linux)**:
    安装 `rbenv` 时通常会自动包含 `ruby-build`,若未安装:
    “`bash
    brew install ruby-build
    “`

    – **通过 Git 手动安装**:
    “`bash
    # 克隆到 rbenv 的 plugins 目录
    git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
    “`

    #### 2. 独立使用(不依赖 rbenv)
    “`bash
    # 克隆仓库
    git clone https://github.com/rbenv/ruby-build.git
    cd ruby-build
    # 安装到系统(需 sudo)
    sudo ./install.sh
    “`
    独立使用时,安装命令为 `ruby-build <版本号> <安装路径>`,例如:
    “`bash
    ruby-build 3.3.0 ~/my-ruby-3.3.0
    “`

    ### **常见问题与解决**
    1. **编译失败(依赖缺失)**
    安装前需确保系统有基础编译工具和库:
    – **macOS**:
    “`bash
    xcode-select –install # 安装 Xcode 命令行工具
    brew install openssl readline libyaml # 安装常用依赖
    “`
    – **Ubuntu/Debian**:
    “`bash
    sudo apt-get install gcc make libssl-dev libreadline-dev zlib1g-dev
    “`

    2. **安装速度慢**
    可通过配置镜像加速源码下载(以 Ruby 为例):
    “`bash
    # 临时指定国内镜像(淘宝源)
    RUBY_BUILD_MIRROR_URL=https://cache.ruby-china.com/pub/ruby rbenv install 3.3.0
    “`

    3. **版本列表过时**
    升级 `ruby-build` 即可获取最新版本列表(见上文“升级”命令)。

    `ruby-build` 是 `rbenv` 生态中不可或缺的工具,它让 Ruby 版本的安装从繁琐的手动编译简化为一条命令,非常适合开发环境中快速切换和管理 Ruby 版本。

  • rbenv

    `rbenv` 是一个轻量级的 Ruby 版本管理工具,用于在同一台机器上安装和切换多个 Ruby 版本,方便不同项目使用不同的 Ruby 环境,避免版本冲突。它比 RVM 更简洁,主要通过环境变量和垫片(shims)机制工作,不依赖 shell 重写,对系统的侵入性较低。

    ### **主要功能**
    1. **安装多个 Ruby 版本**:支持从源码编译或通过 `ruby-build` 插件快速安装特定版本的 Ruby。
    2. **切换 Ruby 版本**:可以为全局、当前目录(项目)或当前 shell 会话设置不同的 Ruby 版本。
    3. **隔离项目依赖**:配合 `Gemfile` 和 `bundler`,确保每个项目使用独立的 gem 环境。

    ### **常用命令**
    1. **安装 Ruby 版本**
    需先安装 `ruby-build` 插件(`rbenv install` 命令依赖它):
    “`bash
    # 安装指定版本(如 3.2.2)
    rbenv install 3.2.2
    “`

    2. **查看可用/已安装版本**
    “`bash
    # 列出所有可安装的 Ruby 版本
    rbenv install –list

    # 列出已安装的 Ruby 版本
    rbenv versions
    “`

    3. **设置 Ruby 版本**
    “`bash
    # 设置全局默认版本(影响整个系统)
    rbenv global 3.2.2

    # 设置当前目录(项目)的版本(会生成 .ruby-version 文件)
    rbenv local 2.7.8

    # 设置当前 shell 会话的临时版本
    rbenv shell 3.1.4
    “`

    4. **刷新垫片(shims)**
    安装新 gem 或 Ruby 版本后,需更新垫片让系统识别:
    “`bash
    rbenv rehash
    “`

    5. **查看当前使用的 Ruby 版本**
    “`bash
    rbenv version
    “`

    ### **安装方法(以 macOS 为例)**
    1. 使用 Homebrew 安装:
    “`bash
    brew install rbenv ruby-build
    “`

    2. 初始化(根据 shell 类型,如 bash/zsh):
    “`bash
    # 对于 zsh(默认写入 ~/.zshrc)
    echo ‘eval “$(rbenv init – zsh)”‘ >> ~/.zshrc
    source ~/.zshrc

    # 对于 bash(写入 ~/.bash_profile 或 ~/.bashrc)
    echo ‘eval “$(rbenv init – bash)”‘ >> ~/.bash_profile
    source ~/.bash_profile
    “`

    ### **注意事项**
    – 安装 Ruby 前需确保系统有编译依赖(如 `gcc`、`openssl` 等),macOS 可通过 `xcode-select –install` 安装工具链。
    – 项目中使用 `rbenv local` 会生成 `.ruby-version` 文件,建议提交到 Git,方便团队统一版本。
    – 与 `bundler` 配合时,使用 `bundle exec` 确保命令在当前项目的 gem 环境中运行。

    通过 `rbenv`,可以灵活管理 Ruby 版本,适合多项目开发场景。

  • ruby的gem命令

    gem 是 Ruby 的包管理工具,用于安装、卸载、管理 Ruby 库(称为 “gems”),类似于 Python 的 pip 或 Node.js 的 npm。通过 gem 命令,你可以轻松获取并使用社区提供的 Ruby 库(如 rails、cocoapods 等)。

    # 安装最新版本
     gem install 
    
    # 例:安装 Rails
    
    gem install rails
    
    # 安装指定版本
    
    gem install  -v <版本号>
    
    # 例:安装 6.1.4 版本的 Rails
    
    gem install rails -v 6.1.4
    
    # 安装时不生成文档(加速安装)
    
    gem install  --no-document
    
    # 卸载指定版本
    
    gem uninstall  -v <版本号>
    
    # 例:卸载 6.1.4 版本的 Rails
    
    gem uninstall rails -v 6.1.4
    
    # 若只安装了一个版本,直接卸载
    
    gem uninstall 
    
    # 列出所有已安装的 gems 及其版本
    
    gem list
    
    # 搜索指定 gem(检查是否安装)
    
    gem list <关键词>
    
    # 例:搜索 rails 相关的 gems
    
    gem list rails
    
    # 更新指定 gem 到最新版本
    
    gem update 
    
    # 例:更新 Rails
    
    gem update rails
    
    # 更新所有已安装的 gems(谨慎使用,可能引发依赖冲突)
    
    gem update
    
    # 更新 gem 工具本身
    
    gem update --system
    
    # 查看指定 gem 的详细信息(作者、版本、依赖等)
    
    gem info 
    
    # 例:查看 cocoapods 信息
    
    gem info cocoapods
    
    # 从 RubyGems 仓库搜索 gem(需联网)
    
    gem search <关键词>
    
    # 例:搜索 json 相关的 gems
    
    gem search json
    
    # 查看当前源
    
    gem sources
    
    # 添加新源(如 Ruby China)
    
    gem sources --add https://gems.ruby-china.com/
    
    # 移除默认源(避免冲突)
    
    gem sources --remove https://rubygems.org/
    
    # 清空所有源(谨慎使用)
    
    gem sources --clear-all
    
    # 移除已安装 gem 的旧版本(保留最新版)
    
    gem cleanup
    
    # 清理指定 gem 的旧版本
     gem cleanup

    系统 Ruby 安装的 gems 通常在 /Library/Ruby/Gems/ 或 /usr/local/lib/ruby/gems/。
    通过 rbenv 管理的 Ruby,gems 安装在 ~/.rbenv/versions/<版本号>/lib/ruby/gems/。
    可通过 gem env 查看详细路径信息(如 INSTALLATION DIRECTORY)。
    注意事项
    系统自带的 Ruby 可能需要 sudo 权限安装 gems(如 sudo gem install cocoapods),但建议用 rbenv 等工具管理 Ruby 版本,避免权限问题。
    部分 gems 依赖系统库(如 nokogiri 依赖 libxml2),安装失败时需先安装对应系统依赖(可通过 brew 或 apt 等工具)。
    Gemfile + bundler 是项目级别的依赖管理方案,比直接用 gem 更适合团队协作(锁定版本,避免冲突)。

    gem 是 Ruby 生态的基础工具,掌握它能高效管理 Ruby 库,提升开发效率。

  • diy 太阳能vps电池给家里服务器使用

    https://energy.ironws.com/zh/inverters/diy-solar-power-station-ups-conversion

    https://energy.ironws.com/zh/inverters/pwm-vs-mppt-solar-charge-controllers

    太阳能充电控制器
    太阳能充电控制器连接到您的电池。使用双极断路器在控制器和电池之间进行安全连接。建议使用 MPPT(最大功率点跟踪)控制器,因为其效率更高,特别是 MP5 版本。
    连接太阳能电池板
    通过另一个双极断路器将您的太阳能电池板与充电控制器接线。确保电池板的电压和电流规格与控制器的输入要求相匹配。

    电压控制继电器(例如 XH-M602)对于优化太阳能的使用至关重要。连接它来监测电池电压并控制接触器。
    5. 接线接触器
    在电网电源输入和您的 UPS 之间安装接触器。电压控制继电器将操作此接触器,根据需要在太阳能和电网电力之间切换。
    在开始转换之前,评估您现有的 UPS。大多数家庭 UPS 系统在 12V 下运行,但有些可能使用 24V。此信息对于选择兼容的组件至关重要。

    准备买一个电瓶扔车里,车里放了一个Linux服务器然后充电使用。