Ruby on rails 需要解决捆绑机错误”的问题;您必须提供exec_名称(ArgumentError)";

Ruby on rails 需要解决捆绑机错误”的问题;您必须提供exec_名称(ArgumentError)";,ruby-on-rails,ruby,rubygems,bundler,passenger,Ruby On Rails,Ruby,Rubygems,Bundler,Passenger,最近的OS X Mojave更新把我的开发环境搞砸了。mysql2 gem由于与openssl冲突而停止工作,并且我的应用程序无法访问数据库。经过一点工作,我让他们运行,除了一个。我从bundler那里得到了一个奇怪的错误: 您必须提供exec_名称(ArgumentError) 谷歌搜索不会返回很多信息。我可以找到这行代码的来源,但我无法确定原因。似乎没有正确地传递参数。以前有人遇到过这个错误吗?你有解决办法吗 我正在运行OS X Mojave 10.14.6、brew、apache、rben

最近的OS X Mojave更新把我的开发环境搞砸了。mysql2 gem由于与openssl冲突而停止工作,并且我的应用程序无法访问数据库。经过一点工作,我让他们运行,除了一个。我从bundler那里得到了一个奇怪的错误:

您必须提供exec_名称(ArgumentError)

谷歌搜索不会返回很多信息。我可以找到这行代码的来源,但我无法确定原因。似乎没有正确地传递参数。以前有人遇到过这个错误吗?你有解决办法吗

我正在运行OS X Mojave 10.14.6、brew、apache、rbenv、Phusion Passenger、bundler 2.1.4。我最初使用Ruby 2.5.1,并尝试了2.5.2,但没有什么不同

以下是完整的输出:

     (set PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY=0 to disable)
     Compilation successful. The logs are here:
     /var/folders/dz/w4nlmkh15zd2w58p748jqhf40000gn/T/passenger_native_support-15m6n7c.log
 [passenger_native_support.bundle] successfully loaded.
Error: The application encountered the following error: you must supply exec_name (ArgumentError)
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/bundler-2.1.4/lib/bundler/rubygems_integration.rb:362:in `block in replace_bin_path'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/bundler-2.1.4/lib/bundler/rubygems_integration.rb:413:in `block in replace_bin_path'
    /Users/someuser/Sites/somedomain.localhost/config/initializers/wicked_pdf.rb:38:in `<module:WickedPdfHelper>'
    /Users/someuser/Sites/somedomain.localhost/config/initializers/wicked_pdf.rb:26:in `<top (required)>'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/activesupport-5.2.4.1/lib/active_support/dependencies.rb:285:in `load'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/activesupport-5.2.4.1/lib/active_support/dependencies.rb:285:in `block in load'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/activesupport-5.2.4.1/lib/active_support/dependencies.rb:257:in `load_dependency'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/activesupport-5.2.4.1/lib/active_support/dependencies.rb:285:in `load'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/railties-5.2.4.1/lib/rails/engine.rb:663:in `block in load_config_initializer'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/activesupport-5.2.4.1/lib/active_support/notifications.rb:170:in `instrument'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/railties-5.2.4.1/lib/rails/engine.rb:662:in `load_config_initializer'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/railties-5.2.4.1/lib/rails/engine.rb:620:in `block (2 levels) in <class:Engine>'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/railties-5.2.4.1/lib/rails/engine.rb:619:in `each'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/railties-5.2.4.1/lib/rails/engine.rb:619:in `block in <class:Engine>'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/railties-5.2.4.1/lib/rails/initializable.rb:32:in `instance_exec'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/railties-5.2.4.1/lib/rails/initializable.rb:32:in `run'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/railties-5.2.4.1/lib/rails/initializable.rb:61:in `block in run_initializers'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/2.5.0/tsort.rb:228:in `block in tsort_each'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/2.5.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/2.5.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/2.5.0/tsort.rb:431:in `each_strongly_connected_component_from'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/2.5.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/railties-5.2.4.1/lib/rails/initializable.rb:50:in `each'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/railties-5.2.4.1/lib/rails/initializable.rb:50:in `tsort_each_child'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/2.5.0/tsort.rb:415:in `call'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/2.5.0/tsort.rb:415:in `each_strongly_connected_component_from'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/2.5.0/tsort.rb:349:in `block in each_strongly_connected_component'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/2.5.0/tsort.rb:347:in `each'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/2.5.0/tsort.rb:347:in `call'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/2.5.0/tsort.rb:347:in `each_strongly_connected_component'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/2.5.0/tsort.rb:226:in `tsort_each'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/2.5.0/tsort.rb:205:in `tsort_each'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/railties-5.2.4.1/lib/rails/initializable.rb:60:in `run_initializers'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/railties-5.2.4.1/lib/rails/application.rb:361:in `initialize!'
    /Users/someuser/Sites/somedomain.localhost/config/environment.rb:5:in `<top (required)>'
    config.ru:3:in `require_relative'
    config.ru:3:in `block in <main>'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/rack-2.0.8/lib/rack/builder.rb:55:in `instance_eval'
    /Users/someuser/.rbenv/versions/2.5.2/lib/ruby/gems/2.5.0/gems/rack-2.0.8/lib/rack/builder.rb:55:in `initialize'
    config.ru:1:in `new'
    config.ru:1:in `<main>'
    /usr/local/Cellar/passenger/6.0.4_2/libexec/src/helper-scripts/rack-preloader.rb:101:in `eval'
    /usr/local/Cellar/passenger/6.0.4_2/libexec/src/helper-scripts/rack-preloader.rb:101:in `preload_app'
    /usr/local/Cellar/passenger/6.0.4_2/libexec/src/helper-scripts/rack-preloader.rb:189:in `block in <module:App>'
    /usr/local/Cellar/passenger/6.0.4_2/libexec/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb:380:in `run_block_and_record_step_progress'
    /usr/local/Cellar/passenger/6.0.4_2/libexec/src/helper-scripts/rack-preloader.rb:188:in `<module:App>'
    /usr/local/Cellar/passenger/6.0.4_2/libexec/src/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
    /usr/local/Cellar/passenger/6.0.4_2/libexec/src/helper-scripts/rack-preloader.rb:29:in `<main>'
出现问题的应用程序的apache v-host条目:

<VirtualHost *:80>
    ServerAdmin here@there.com
    ServerName somedomain.localhost
    ServerAlias www.somedomain.localhost
    DocumentRoot /Users/someuser/Sites/somedomain.localhost/public
    PassengerRuby /Users/someuser/.rbenv/shims/ruby

    ErrorLog /private/var/log/apache2/error_log
    <Directory /Users/someuser/Sites/somedomain.localhost/public>
        Options -Multiviews
        # ^ for Apache 2.4+
        Order allow,deny
        Allow from all
        #Require all granted
        RailsEnv development
    </Directory>
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin here@there.com
    ServerName somedomain.localhost
    ServerAlias www.somedomain.localhost
    DocumentRoot /Users/someuser/Sites/somedomain.localhost/public

    PassengerRuby /Users/someuser/.rbenv/shims/ruby
    PassengerAppEnv "development"
    PassengerMinInstances 1

    ErrorLog /private/var/log/apache2/error_log
    <Directory /Users/someuser/Sites/somedomain.localhost>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride FileInfo Indexes Authconfig

        Require all granted
    </Directory>

    SSLProtocol All -SSLv2 -SSLv3
    SSLEngine On
    SSLCertificateFile "/private/etc/apache2/ssl/somedomain.localhost/server.crt"
    SSLCertificateKeyFile "/private/etc/apache2/ssl/somedomain.localhost/server.key"
</VirtualHost>```

服务器管理员here@there.com
ServerName somedomain.localhost
ServerAlias www.somedomain.localhost
DocumentRoot/Users/someuser/Sites/somedomain.localhost/public
PassengerRuby/Users/someuser/.rbenv/shimmes/ruby
ErrorLog/private/var/log/apache2/error\u log
选项-多视图
#^适用于Apache 2.4+
命令允许,拒绝
通融
#要求所有授权
RailsEnv开发
服务器管理员here@there.com
ServerName somedomain.localhost
ServerAlias www.somedomain.localhost
DocumentRoot/Users/someuser/Sites/somedomain.localhost/public
PassengerRuby/Users/someuser/.rbenv/shimmes/ruby
Passengerapenv“发展”
乘客1
ErrorLog/private/var/log/apache2/error\u log
选项索引跟随符号链接多视图
AllowOverride文件信息索引Authconfig
要求所有授权
SSLProtocol All-SSLv2-SSLv3
斯伦金安
SSLCertificateFile“/private/etc/apache2/ssl/somedomain.localhost/server.crt”
SSLCertificateKeyFile“/private/etc/apache2/ssl/somedomain.localhost/server.key”
```
也有同样的问题。

系统升级后,我的bundler版本是
2.1.4
,降级到
2.0.2
解决了这个问题。

这是由于bundler 2.1中的一个突破性更改引起的,您可以通过查看

此更改旨在防止您在调用
Gem.bin\u path
时加载错误的可执行文件。假设两个gem(
myGem
yourGem
)包含同名的可执行文件,
runmyprogram
。调用
Gem.bin\u路径(“运行我的程序”)
是不明确的——您希望加载哪个可执行文件

这是一个主要的安全风险——您可能正在运行一个可执行文件,而认为您正在运行另一个可执行文件

为了避免这种模糊性,bundler现在强制您在调用
gem.bin_path
时指定要从哪个gem加载可执行文件:

Gem.bin_path(
  'myGem', # Ensures you load the executable from myGem instead of yourGem
  'the-executable-name'
)

检查源代码(stacktrace建议一个好的起点是
config/initializers/wicked_pdf.rb
),查看对
Gem.bin_path
Gem.activate_bin_path
Gem的任何调用。查找\u exe的\u spec_
,并确保传递2秒参数:要从中加载可执行文件的Gem的名称,后跟可执行文件的名称。

这似乎是绑定程序错误,您的绑定程序版本是否已更改?我有时会收到Heroku的警告,说我的bundler已经更新,如果我遇到问题,我应该尝试回到旧版本。或者重新安装bundler并重新构建?您的问题必须包括重现该问题的步骤。在本例中,您是说您从bundler获得了一个给定的错误,但是您实际上如何获得这个错误呢?bundler做了很多事情——在您包含(绝对最小值)您输入的生成此错误的实际命令之前,我不确定是否有人可以帮助您。我尝试了一些不同版本的bundler,但收到了相同的错误消息。Bundler 2.1.4在我拥有的其他开发计算机上工作,所以我不明白为什么这台计算机会出现问题。就复制这个问题而言,这是一个非常基本的Rails应用程序。我已经列出了软件版本,但我认为我的系统有一些特定的东西被破坏了。为什么一个Rails应用程序工作而另一个应用程序不工作是非常奇怪的。我可能会从零开始重新安装操作系统。这一切都是因为Mojave的更新,所以谁知道这是怎么回事。这个问题是由初始化器中的一些代码引起的。您可以在错误日志中看到几行,其中显示“initializers/wicked_pdf.rb:38”。我重新生成了wicked_pdf gem的初始值设定项,应用程序开始正常工作。我不知道为什么它不想在这台计算机上运行,因为它在另一台具有完全相同的操作系统和应用软件的计算机上运行。
Gem.bin_path(
  'myGem', # Ensures you load the executable from myGem instead of yourGem
  'the-executable-name'
)