OSx v12.4
Ruby v2.6.0
XCode v13.4.1
`mysql2` gem, SHA e9c662912dc3bd3707e6c7f0c75e591294cffe12
我克隆了mysql2repo,我試圖ruby benchmark/active_record.rb從根目錄運行。我收到以下錯誤:
/Users/richiethomas/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/activesupport-
6.1.6/lib/active_support/dependencies.rb:332:in `require': Could not load the 'mysql'
Active Record adapter. Ensure that the adapter is spelled correctly in
config/database.yml and that you've added the necessary adapter gem to your Gemfile.
(LoadError)
我在回購中看到以下內容Gemfile:
group :benchmarks, optional: true do
gem 'activerecord', '>= 3.0'
gem 'benchmark-ips'
gem 'do_mysql'
gem 'faker'
# The installation of the mysql latest version 2.9.1 fails on Ruby >= 2.4.
gem 'mysql' if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.4')
gem 'sequel'
end
我嘗試運行bundle install --with=benchmarks,并且成功完成,但是它沒有安裝mysqlActiveRecord 配接器,因為我的 Ruby 版本是 2.6.0。
雖然我知道這不是必需的,但我嘗試mysql通過以下命令安裝 gem,根據gem 的README.md檔案:
gem install mysql2 -- --with-mysql-dir=-/usr/local/opt/mysql@5.7
但是,在這里我得到:
library not found for -lssl
clang: error: linker command failed with exit code 1
mysql根據此 StackOverflow 答案,我還嘗試使用以下命令進行安裝:
gem install mysql -- --with-ldflags=-L/usr/local/opt/openssl/lib
但是,我收到一個與 相關的錯誤rb_cFixnum,我推測這是因為Fixnum我的 Ruby 版本中不存在該類(它似乎已在 2.4.0 中被淘汰,而我在 2.6.0 上)。在這兩個錯誤之間,我覺得我可以排除錯誤是由于缺少mysqlgem 引起的可能性。
如果根本問題是一個過時的聯結器檔案,我已將我的作業系統和 XCode 更新到今天可用的最新版本。完成此更新程序后出現上述錯誤。
我的問題有兩個:
我注意到錯誤訊息參考了
config/database.yml,我習慣于在我的 Rails 專案中看到,但我在mysql2repo 的任何地方都看不到。這是否意味著我只能在有關聯database.yml檔案的情況下運行基準測驗?如果是這樣,我將如何從(例如)“Hello World”型別的 Rails 專案運行這些基準測驗?如果我無法將
mysqlgem 與高于 2.4.0 的 Ruby 版本一起安裝,為什么該benchmarks/active_record.rb檔案似乎依賴于它在這行代碼中的存在?無論我的 Ruby 版本如何,我都希望能夠運行基準檔案。
uj5u.com熱心網友回復:
我認為您不應該假設無需手動編輯和更正基準代碼即可運行基準測驗。例如,該檔案setup_db.rb包含您顯然需要編輯的硬編碼憑據。
另請注意,您必須先運行安裝檔案,然后再運行其他任何內容。例如,該active_record.rb檔案似乎正在使用使用mysql2_test創建的表中的資料setup_db.rb。
您獲得的參考database.yml只是來自 Rails 代碼庫的標準錯誤訊息。這并不意味著您需要此檔案進行測驗。實際上,您很可能需要編輯檔案opts中的行active_record.rb,以指向可以連接到與您在setup_rb.rb.
另外,如果您已經安裝了 gem,我也會跳過mysqlgem 并嘗試使用它來運行它。mysql2為此,您必須mysql從測驗代碼中洗掉任何參考。
如果您查看mysqlRubygems 上的 gem,最新版本來自 2013。您不太可能讓它在任何現代 Ruby 版本上運行。這也暗示了基準代碼最有可能是多么過時。
通過查看基準檔案夾中檔案的 git 歷史記錄,可以看到更多關于過期的提示。它們自 2017 年以來未更新。
總結:
您必須編輯基準代碼才能使其正常作業。該代碼看起來不像是以一種通用的“一勞永逸”的方式設定的,而且很可能已經過時了。
不要安裝mysql,而是安裝mysql2。關于mysql2安裝問題的問題,最好發個新問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/485802.html
