小编Hir*_*103的帖子

VirtualBox:VERR_VM_DRIVER_NOT_INSTALLED

我正在尝试使用 docker 机器启动两个虚拟机:

docker-machine create --driver virtualbox myvm1
docker-machine create --driver virtualbox myvm2
Run Code Online (Sandbox Code Playgroud)

我在输出中看到以下错误:

(myvm2) Progress state: NS_ERROR_FAILURE
(myvm2) VBoxManage: error: Failed to create the host-only adapter
(myvm2) VBoxManage: error: VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory
(myvm2) VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInterface
(myvm2) VBoxManage: error: Context: "RTEXITCODE handleCreate(HandlerArg *)" at line 94 of file VBoxManageHostonly.cpp
(myvm2)
(myvm2) This is a known VirtualBox bug. Let's try to …
Run Code Online (Sandbox Code Playgroud)

virtualbox docker-machine macos-mojave

15
推荐指数
1
解决办法
3万
查看次数

Selenium :: WebDriver :: Error :: UnknownError:newSession

我用selenium webdriver运行我的rspec测试.设置看起来如下:

require 'capybara/dsl'

Capybara.app = Rack::File.new File.expand_path('../fixtures', __FILE__)

require 'selenium-webdriver'

Capybara.register_driver :firefox do |app|
  options = ::Selenium::WebDriver::Firefox::Options.new
  options.args << '--headless' if travis?

  Capybara::Selenium::Driver.new(app, browser: :firefox, options: options)
end
Capybara.default_driver = :firefox
Run Code Online (Sandbox Code Playgroud)

当我运行rspec测试失败时

 Failure/Error: visit '/select2-v3/index.html'

 Selenium::WebDriver::Error::UnknownError:
   newSession
 # WebDriverError@chrome://marionette/content/error.js:178:5
 # UnknownCommandError@chrome://marionette/content/error.js:472:5
 # despatch@chrome://marionette/content/server.js:290:13
 # execute@chrome://marionette/content/server.js:271:11
 # onPacket/<@chrome://marionette/content/server.js:246:15
 # onPacket@chrome://marionette/content/server.js:245:8
 # _onJSONObjectReady/<@chrome://marionette/content/transport.js:490:9
 # ./spec/select2_spec.rb:6:in `block (2 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

谷歌搜索没有给我任何结果.

你有任何想法如何解决它?

更新:我使用的是firefox v63.0

firefox selenium capybara geckodriver

10
推荐指数
1
解决办法
1938
查看次数

如何手动添加抽屉导航底部的额外项目(如注销按钮)?

我想在RN应用程序的抽屉导航底部添加注销按钮.

如您所见,

我试图使用contentComponent以下方式:

const DrawerWithLogoutButton = (props) => (
  <ScrollView>
    <SafeAreaView style={styles.container} forceInset={{ top: 'always', horizontal: 'never' }}>
      <DrawerItems {...props} />
    </SafeAreaView>
    <Button
      style={styles.logoutButton}
      title="Logout"
      onPress={() => props.navigation.navigate('Login') }/>
  </ScrollView>
);

export default Home = createDrawerNavigator({
  // screens
}, {
  // other settings
  contentComponent: DrawerWithLogoutButton,
});

const styles = StyleSheet.create({
  container: {
    flex: 1,
    flexDirection: 'column',
  },
  logoutButton: {
    backgroundColor: 'red',
    position: 'absolute',
    bottom: 0
  }
});
Run Code Online (Sandbox Code Playgroud)

在结果中,我有菜单底部的Logout按钮.但我希望它位于抽屉面板的底部

此外,我希望Logout按钮看起来像其他菜单项并有一个图标

有没有办法用菜单项创建抽屉导航器,菜单项没有屏幕,但只是像我的情况一样的注销操作?

navigation-drawer react-native react-navigation

6
推荐指数
2
解决办法
3620
查看次数

mysql2:库未加载:自制软件更新后的/usr/local/opt/openssl/lib/libssl.1.0.0.dylib

在我将 mac OS Mojave 从 升级v10.14.0v10.14.2以及所有使用 Homebrew 安装的软件包后,我在运行时开始收到以下错误bin/rails console

/Users/hirurg103/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require': dlopen(/Users/hirurg103/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.4/lib/mysql2/mysql2.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)
  Referenced from: /usr/local/opt/mysql@5.6/lib/libmysqlclient.18.dylib
  Reason: image not found - /Users/hirurg103/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.4/lib/mysql2/mysql2.bundle
Run Code Online (Sandbox Code Playgroud)

我尝试卸载mysql2gem 并使用 cpp 和 ld 标志安装它:

gem uninstall mysql2
gem install mysql2 -v 0.4.4 -- --with-cppflags=-I/usr/local/opt/openssl/include/openssl --with-ldflags=-L/usr/local/opt/openssl/lib
Run Code Online (Sandbox Code Playgroud)

但它没有帮助。

我也尝试升级mysql2到最新版本(v0.5.3在撰写本文时),但它也不起作用

ls -l /usr/local/opt/openssl/lib 给我:

total 14472
drwxr-xr-x  4 hirurg103  staff      128 Sep 10 16:13 engines-1.1
-r--r--r--  1 hirurg103  staff  2265596 Dec 13 …
Run Code Online (Sandbox Code Playgroud)

openssl mysql2 macos-mojave

6
推荐指数
2
解决办法
6313
查看次数

如何检查 PDF 文件是否与 Ruby/Rspec 存在某些链接?

我正在使用prawnpdf/pdf-inspector来测试 Rails 应用程序中生成的 PDF 内容是否正确。

我想检查 PDF 文件是否包含具有特定 URL 的链接。我查看了yob/pdf-reader但没有找到与此主题相关的任何有用信息

是否可以使用 Ruby/RSpec 测试 PDF 中的 URL?

我想要以下内容:

expect(urls_in_pdf(pdf)).to include 'https://example.com/users/1'
Run Code Online (Sandbox Code Playgroud)

ruby pdf pdf-generation rspec

5
推荐指数
1
解决办法
2252
查看次数

使用 gitlab runner 在服务内运行配置命令

我需要为 elasticsearch 服务启用脚本来运行我的 rspec 测试

# config/elasticsearch.yml
script.inline: on
script.indexed: on
Run Code Online (Sandbox Code Playgroud)

我尝试在 docker 容器内按以下方式更改 elasticsearch 配置.gitlab-ci.yml

rspec:
  stage: test
  services:
    - mysql:5.6.42
    - name: elasticsearch:1.6.1
      command: ["echo 'script.inline: on' >> /etc/elasticsearch/elasticsearch.yml", "echo 'script.indexed: on' >> /etc/elasticsearch/elasticsearch.yml", "systemctl restart elasticsearch"]
  ...
Run Code Online (Sandbox Code Playgroud)

但服务容器启动失败

*** WARNING: Service runner-6JNFXPMk-project-9870108-concurrent-0-elasticsearch-1 probably didn't start properly.

Health check error:
ContainerStart: Error response from daemon: Cannot link to a non running container: /runner-6LBTXPMk-project-13870108-concurrent-0-elasticsearch-1 AS /runner-6LBTXPMk-project-13870108-concurrent-0-elasticsearch-1-wait-for-service/service (executor_docker.go:1318:0s)

Service container logs:
2018-12-26T11:07:47.604151437Z /docker-entrypoint.sh: line 20: /echo 'script.inline: on' …
Run Code Online (Sandbox Code Playgroud)

elasticsearch gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
2309
查看次数

如何使用水豚 + 无头 chrome 测试确认/警报消息

最近,我将验收测试从 capybara-webkit 切换到无头 chrome。在某些情况下,我需要检查警报消息(例如,当用户离开页面时确认放弃更改)。使用 capybara-webkit 我按照以下方式完成了

confirm_messages = page.driver.browser.confirm_messages
expect(confirm_messages.first).to include "Do you want to discard your changes?"

# or

expect(page.driver.browser.confirm_messages).to be_empty
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试使用 chrome/headless chrome 获取确认消息时,出现以下错误:

undefined method `confirm_messages' for #<Selenium::WebDriver::Chrome::Driver:0x007fa5478d8a08> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

如何使用水豚和无头镀铬测试警报?

confirm alert capybara google-chrome-headless

3
推荐指数
1
解决办法
1027
查看次数

如何优雅地处理快递中的承诺拒绝

我有以下快递控制器

class ThingsController {

  static async index(req, res, next) {
    try {
      const things = await Thing.all();
      res.json(things);
    } catch(err) {
      next(err);
    }  
  }
}
Run Code Online (Sandbox Code Playgroud)

和路由器

router.route('/things').get(ThingsController.index)
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我计划使用几个控制器来渲染结果

我不想每次都重复 try/catch 块

我的第一个解决方案是将此逻辑提取到处理承诺拒绝功能中:

const handlePromiseRejection = (handler) =>

  async (req, res, next) => {
    try{
      await handler(req, res, next);
    } catch(err) {
      next(err);
    };
  };
Run Code Online (Sandbox Code Playgroud)

现在我们可以从 ThingsController.index 中删除 try/catch 块,并且需要将路由器更改为:

router.route('/things')
  .get(handlePromiseRejection(ThingsController.index))
Run Code Online (Sandbox Code Playgroud)

但是添加handlePromiseRejection每条路线可能是一项乏味的任务,我希望有更聪明的解决方案。

你有什么想法?

promise express es6-promise express-router

3
推荐指数
1
解决办法
2758
查看次数

ld:在安装mysql2 gem时找不到-lssl的库

我将项目的Gemfile中的mysql2版本从0.3.20更改为0.5.2。当我运行时bundle update mysql2,出现以下错误:

Fetching mysql2 0.5.2 (was 0.3.21)
Installing mysql2 0.5.2 (was 0.3.21) with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/hirurg103/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.5.2/ext/mysql2
/Users/hirurg103/.rbenv/versions/2.4.1/bin/ruby -I /Users/hirurg103/.rbenv/versions/2.4.1/lib/ruby/site_ruby/2.4.0 -r ./siteconf20190715-35076-13r30uh.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for rb_wait_for_single_fd()... yes
-----
Using mysql_config at /usr/local/opt/mysql@5.6/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for SSL_MODE_DISABLED in mysql.h... no
checking for MYSQL_OPT_SSL_ENFORCE in mysql.h... no
checking for MYSQL.net.vio …
Run Code Online (Sandbox Code Playgroud)

failed-installation mysql2

2
推荐指数
1
解决办法
369
查看次数

Docker:您必须将 Bundler 2 或更高版本与此锁定文件一起使用

我正在尝试2.1在从ruby:2.4.1. 我的 Docker 文件如下所示:

FROM ruby:2.4.1

RUN \
  gem update --system --quiet && \
  gem install  bundler -v '~> 2.1'

# Other commands
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行时bundle install它失败了

You must use Bundler 2 or greater with this lockfile.
Run Code Online (Sandbox Code Playgroud)

当我在容器内运行时,gem info bundler它输出:

bundler (2.1.2, 1.15.4)
    Authors: André Arko, Samuel Giddins, Colby Swandale, Hiroshi
    Shibata, David Rodríguez, Grey Baker, Stephanie Morillo, Chris
    Morris, James Wen, Tim Moore, André Medeiros, Jessica Lynn Suttles,
    Terence Lee, Carl Lerche, Yehuda …
Run Code Online (Sandbox Code Playgroud)

ruby bundler docker

2
推荐指数
1
解决办法
1090
查看次数

如何将水豚屏幕截图从 gitlab runner 上传到数字海洋缓存?

我正在数字海洋服务器上使用 gitlab runner 运行我的 Rails 测试。我将捆绑器缓存保存在数字海洋空间中

另外,当测试用例失败时,我还使用 capybara-screenshot 来制作页面的屏幕截图。当测试失败时,屏幕截图将被保存到./tmp/capybara/

然后,在测试运行结束后,构建服务器将被删除,屏幕截图也会丢失,这使得测试失败的调查变得更加困难。

有没有办法./tmp/capybara/使用 gitlab 运行程序用来检索/上传缓存的密钥和秘密将文件夹的内容上传到数字海洋空间?

digital-ocean gitlab-ci gitlab-ci-runner

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