首页 > 解决方案 > 为什么我不能执行 $ bundle exec rake secret?出现错误“错误的解释器:没有这样的文件或目录”

问题描述

我的ruby版本是2.3.0,我的mysql版本是8.0.23,我的mysql2版本是0.5.3,我的rails版本是5.0.7.2,我的Xcode版本是12.5。

我使用 macOS Big Sur(11.4 版)和文本编辑器“Atom”。

我计划使用 HEROKU 的 URL 发布我的 Rails 应用程序(例如 https://[My APP Name].herokuapp.com)。

我运行了以下命令。

$ heroku open

发生以下错误。

An unhandled lowlevel error occurred. The application logs may have details.

我运行了以下命令。

$ heroku logs

#<RuntimeError: Missing
 `secret_key_base` for 'production' environment, set this value in `
config/secrets.yml`>

我的 config/secrets.yml 文件如下所示。

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

我编辑了我的 config/secrets.yml 文件,如下所示。

production:
  secret_key_base: <%= ENV["secret_key_base"] %>

我使用此命令删除了如下两个环境变量:$ heroku config:unset [ENVIRONMENT VARIABLE NAME].

$ heroku config:unset DATABASE_USERNAME=****
$ heroku config:unset DATABASE_PASSWORD=GENERATED_CODE

我使用以下命令删除SECRET_KEY_BASE了 vim 编辑器中的环境变量。/etc/profile

$ vi /etc/profile

我保存了 vim 编辑器/etc/profile以使用以下两个命令结束它。

:w !sudo tee %
:q!

SECRET_KEY_BASE我使用以下命令删除了环境变量。

$ vi ~/.bash_profile

我保存.bash_profile,使用Esc然后“ :x”和Enter

我运行了以下命令。

$ bundle exec rake secret

bash: /usr/local/bin/bundle: /System/Library/Frameworks/Ruby.framework/Versions/2.3/
usr/bin/ruby: bad interpreter: No such file or directory

我运行了以下命令。

$ sed -i 's/\r//' usr/local/bin/bundle

sed: 1: "usr/local/bin/bundle": invalid command code u

我运行了以下命令。

$ /usr/local/bin/bundle

bash: /usr/local/bin/bundle: /System/Library/Frameworks/Ruby.framework/Versions/2.3/
usr/bin/ruby: bad interpreter: No such file or directory

下面是 和gem envwhich bundle输出which ruby

$ gem env

RubyGems Environment:
  - RUBYGEMS VERSION: 3.0.3
  - RUBY VERSION: 2.6.3 (2019-04-16 patchlevel 62) [universal.x86_64-darwin20]
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.6.0
  - USER INSTALLATION DIRECTORY: /Users/****/.gem/ruby/2.6.0
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/
ruby
  - GIT EXECUTABLE: /usr/local/bin/git
  - EXECUTABLE DIRECTORY: /usr/local/bin

  - SPEC CACHE DIRECTORY: /Users/****/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Library/Ruby/Site
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-20
  - GEM PATHS:
     - /Library/Ruby/Gems/2.6.0
     - /Users/****/.gem/ruby/2.6.0
     - /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.
0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /Users/****/.rbenv/shims
$ which bundle

/usr/local/bin/bundle
$ which ruby

/usr/bin/ruby

我安装了 ruby​​ 版本“2.3.0”,如下所示,因为 bundle 似乎调用“2.3”。

$ rbenv install 2.3.0

Downloading openssl-1.0.2u.tar.gz...
-> https://****
Installing openssl-1.0.2u...
Installed openssl-1.0.2u to /Users/****/.rbenv/versions/2.3.0

Downloading ruby-2.3.0.tar.bz2...

-> https://****
Installing ruby-2.3.0...

WARNING: ruby-2.3.0 is past its end of life and is now unsupported.
It no longer receives bug fixes or critical security updates.

ruby-build: using readline from homebrew
Installed ruby-2.3.0 to /Users/****/.rbenv/versions/2.3.0

我验证安装了 ruby​​ 版本“2.3.0”,当前的 ruby​​ 版本是“2.3.0”。

$ rbenv local 2.3.0
$ rbenv rehash
$ rbenv versions
  
  system
* 2.3.0
$ rbenv global 2.3.0
$ rbenv rehash
$ rbenv versions

  system
* 2.3.0

但是当使用以下命令时,ruby 当前版本是“2.6.3”。

$ ruby -v

ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin20]
$ gem env

RubyGems Environment:
  - RUBYGEMS VERSION: 3.0.3
  - RUBY VERSION: 2.6.3 (2019-04-16 patchlevel 62) [universal.x86_64-darwin20]
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.6.0
  - USER INSTALLATION DIRECTORY: /Users/****/.gem/ruby/2.6.0

  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
  - GIT EXECUTABLE: /usr/local/bin/git
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - SPEC CACHE DIRECTORY: /Users/****/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Library/Ruby/Site
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-20
  - GEM PATHS:
     - /Library/Ruby/Gems/2.6.0
     - /Users/****/.gem/ruby/2.6.0
     - /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /Users/****/.rbenv/shims

我运行了以下命令。

$ bundle exec rake secret

bash: /usr/local/bin/bundle: /System/Library/Frameworks/Ruby.framework/Versions/2.3/
usr/bin/ruby: bad interpreter: No such file or directory

为什么我不能执行$ bundle exec rake secret?为什么会有多个当前的 ruby​​ 版本“2.3.0”、“2.6.3”?

发生错误“ bad interpreter: No such file or directory”。

标签: ruby-on-railsbashmacosherokused

解决方案


推荐阅读