小编Rém*_*UHE的帖子

错误:执行gem时...(TypeError)不兼容的编组文件格式(无法读取)

我在运行bundle install时遇到ruby版本2.4.4,OSX Mojave的这个问题:

Fetching nokogiri 1.8.5
Installing nokogiri 1.8.5 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
ERROR: cannot discover where libxml2 is located on your system. please
make sure `pkg-config` is installed.
Run Code Online (Sandbox Code Playgroud)

所以我跑了

xcode-select --install
Run Code Online (Sandbox Code Playgroud)

但是当我运行gem install nokogiri时,我得到了以下输出:

ERROR:  While executing gem ... (TypeError)
    incompatible marshal file format (can't be read)
    format version 4.8 required; 60.33 given
Run Code Online (Sandbox Code Playgroud)

我试着将cookies_serializer设置为:

Rails.application.config.action_dispatch.cookies_serializer = :hybrid
Run Code Online (Sandbox Code Playgroud)

但没有任何效果

有没有办法来解决这个问题 ?我现在甚至无法运行我的rails服务器.

ruby rubygems ruby-on-rails nokogiri macos-mojave

17
推荐指数
3
解决办法
3138
查看次数

如何使用 Rails 应用程序在 Heroku 上正确运行 Selenium Webdriver

我正在使用 watir gem 在我的应用程序上实现一个非常基本的刮刀。它在本地运行得很好,但是当我在 heroku 上运行它时,它会触发此错误:Webdrivers::BrowserNotFound: Failed to find Chrome binary.

我在我的应用程序中添加了 google-chrome 和 chromedriver buildpacks,以告诉 Selenium 在哪里可以找到 Heroku 上的 Chrome,但它仍然不起作用。此外,当我打印选项时,二进制文件似乎已正确设置:

#<Selenium::WebDriver::Chrome::Options:0x0000558bdf7ecc30 @args=#<Set: {"--user-data-dir=/app/tmp/chrome", "--no-sandbox", "--window-size=1200x600", "--headless", "--disable-gpu"}>, @binary="/app/.apt/usr/bin/google-chrome-stable", @prefs={}, @extensions=[], @options={}, @emulation={}, @encoded_extensions=[]>

这是我的应用程序 Buildpack URL:

1. heroku/ruby
2. heroku/google-chrome
3. heroku/chromedriver
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

def new_browser(downloads: false)

  options = Selenium::WebDriver::Chrome::Options.new

  chrome_dir = File.join Dir.pwd, %w(tmp chrome)
  FileUtils.mkdir_p chrome_dir
  user_data_dir = "--user-data-dir=#{chrome_dir}"
  options.add_argument user_data_dir

  if chrome_bin = ENV["GOOGLE_CHROME_SHIM"]
    options.add_argument "--no-sandbox"
    options.binary = chrome_bin
  end

  options.add_argument "--window-size=1200x600"
  options.add_argument "--headless" …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku watir selenium-chromedriver

7
推荐指数
1
解决办法
2394
查看次数