Github actions rails commands "/bin/ruby: invalid option -: (-h will show valid options) (Runti

Posted

技术标签:

【中文标题】Github actions rails commands "/bin/ruby: invalid option -: (-h will show valid options) (RuntimeError)"【英文标题】: 【发布时间】:2020-10-29 09:19:31 【问题描述】:

我正在尝试实现 Github Actions 但无法运行 rails 命令。

在 github 工作流中运行 bundle exec rakebundle exec rails db:create 时引发错误。

Run bundle exec rake rails db:setup
  bundle exec rake rails db:setup
  shell: /bin/bash -e 0
  env:
    PATH: /home/runner/.rubies/ruby-2.6.5/bin:/usr/share/rust/.cargo/bin:/home/runner/.config/composer/vendor/bin:/home/runner/.dotnet/tools:/snap/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin
    RAILS_ENV: test
    POSTGRES_HOST: localhost
    POSTGRES_USER: postgres
    POSTGRES_PASSWORD: postgres
    POSTGRES_PORT: 5432
    RUBYOPT: -W:no-deprecated -W:no-experimental
/home/runner/.rubies/ruby-2.6.5/bin/ruby: invalid option -:  (-h will show valid options) (RuntimeError)
##[error]Process completed with exit code 1.

这是我的 ruby​​.yml 文件:

name: Ruby

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  test:

    runs-on: ubuntu-latest

    services:
      postgres:
        image: postgres:11
        env:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
        ports:
          - "5432:5432"
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5

    steps:
    - uses: actions/checkout@v2
    - name: Set up Ruby
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: 2.6.5
    - name: Install library for postgres
      run: sudo apt-get install libpq-dev
    - name: Install dependencies
      run: bundle install
    - name: Setup Database
      run: bundle exec rake rails db:setup
      env:
        RAILS_ENV: test
        POSTGRES_HOST: localhost
        POSTGRES_USER: postgres
        POSTGRES_PASSWORD: postgres
        POSTGRES_PORT: 5432
        RUBYOPT: "-W:no-deprecated -W:no-experimental"
    - name: Run tests
      env:
        RAILS_ENV: test
        POSTGRES_HOST: localhost
        POSTGRES_USER: postgres
        POSTGRES_PASSWORD: postgres
        POSTGRES_PORT: 5432
        RUBYOPT: "-W:no-deprecated -W:no-experimental"
      run: bundle exec rake
    - name: Ensure that assets compile correctly
      run: bundle exec rails assets:precompile

谢谢大家!

【问题讨论】:

尝试 127.0.0.1 而不是 localhost @ChakreshwarSharma 我尝试使用它而不是 localhost 并引发相同的错误。感谢您的回复。 【参考方案1】:

RUBYOPT='-W:no-deprecated 不适用于 Ruby 版本

改变

ruby-version: 2.6.5

ruby-version: 2.7.0

【讨论】:

不错的建议,我现在就试试。希望新版本不会破坏任何其他代码 LOL。谢谢 谢谢!在我的.bashrc 中有这个设置(可能是为了在使用一些 2.7 后的 ruby​​ 版本时抑制以前的一些弃用警告),评论它让 ruby​​ 再次工作【参考方案2】:

我不知道这是否能给你任何帮助。但是,您可以根据我的发现尝试做我所做的。

转到应用的根目录。运行pwd 命令,查看路径中是否有空格。根据您的问题,它可能在: char 之前有一个空格。

我重命名了包含空格的文件夹名称,一切正常

希望对你有帮助

【讨论】:

以上是关于Github actions rails commands "/bin/ruby: invalid option -: (-h will show valid options) (Runti的主要内容,如果未能解决你的问题,请参考以下文章

@mentions for Users with ActionText in Rails6; Rails6.1更新。

Rails 方法返回当前的“controller#action”?

Rails 4:before_filter 与 before_action

什么相当于 rails 7 中的 `Rails.config.action_view.raise_on_missing_translations`?

Rails6新特性actionable Error

Rails:使用渲染传递参数:action?