我正在尝试使用 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) 我用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
我想在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按钮看起来像其他菜单项并有一个图标
有没有办法用菜单项创建抽屉导航器,菜单项没有屏幕,但只是像我的情况一样的注销操作?
在我将 mac OS Mojave 从 升级v10.14.0到v10.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) 我正在使用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) 我需要为 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) 最近,我将验收测试从 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)
如何使用水豚和无头镀铬测试警报?
我有以下快递控制器
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每条路线可能是一项乏味的任务,我希望有更聪明的解决方案。
你有什么想法?
我将项目的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) 我正在尝试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) 我正在数字海洋服务器上使用 gitlab runner 运行我的 Rails 测试。我将捆绑器缓存保存在数字海洋空间中
另外,当测试用例失败时,我还使用 capybara-screenshot 来制作页面的屏幕截图。当测试失败时,屏幕截图将被保存到./tmp/capybara/
然后,在测试运行结束后,构建服务器将被删除,屏幕截图也会丢失,这使得测试失败的调查变得更加困难。
有没有办法./tmp/capybara/使用 gitlab 运行程序用来检索/上传缓存的密钥和秘密将文件夹的内容上传到数字海洋空间?
capybara ×2
gitlab-ci ×2
macos-mojave ×2
mysql2 ×2
ruby ×2
alert ×1
bundler ×1
confirm ×1
docker ×1
es6-promise ×1
express ×1
firefox ×1
geckodriver ×1
openssl ×1
pdf ×1
promise ×1
react-native ×1
rspec ×1
selenium ×1
virtualbox ×1