最近我安装了Xampp服务器.
我知道apache用于运行php服务器脚本,MySQL用于数据库操作,FileZilla用于将文件传输到Web服务器.
但我不明白Mercury和Tomcat模块的用途,可以解释一下吗?
我有一些看起来像这样的代码:
while response.droplet.status != env["user_droplet_desired_state"] do
sleep 2
response = ocean.droplet.show env["droplet_id"]
say ".", nil, false
end
Run Code Online (Sandbox Code Playgroud)
您可以将应用程序设置为等到服务器处于某种状态(例如,重新启动它,然后再观察它直到它再次处于活动状态)
但是,我在测试中使用webmock,我无法找到第二次给出不同响应的方法.
例如,代码如下:
stub_request(:get, "https://api.digitalocean.com/v2/droplets/6918990?per_page=200").
with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
to_return(:status => 200, :body => fixture('show_droplet_inactive'), :headers => {})
stub_request(:get, "https://api.digitalocean.com/v2/droplets/6918990?per_page=200").
with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
to_return(:status => 200, :body => fixture('show_droplet'), :headers => {})
Run Code Online (Sandbox Code Playgroud)
这个想法是"第一次标记为无效,所以循环经历一次,然后标记为活动"
始终应用与请求匹配的最后声明的存根,即:
stub_request(:get,"www.example.com").to_return(:body =>"abc")
stub_request(:get,"www.example.com").to_return(:body =>"def")
Net :: HTTP.get('www.example.com','/')#====>"def"
是否可以在webmock中为具有不同结果的同一端点建模多个调用?
所以我在我的CI应用程序中找到了一个工作,当一个应用程序开发变更时,它会发布到Nexus.
有没有办法使./sbt发布幂等?因为偶尔会因为临时问题而再次运行作业,因此它会出错:
[16:31:24]java.io.IOException: destination file exists and overwrite == false
[16:31:24] at org.apache.ivy.plugins.repository.url.URLRepository.put(URLRepository.java:75)
[16:31:24] at org.apache.ivy.plugins.repository.AbstractRepository.put(AbstractRepository.java:130)
[16:31:24] at sbt.ConvertResolver$ChecksumFriendlyURLResolver$class.put(ConvertResolver.scala:78)
[16:31:24] at sbt.ConvertResolver$PluginCapableResolver$1.put(ConvertResolver.scala:103)
[16:31:24] at org.apache.ivy.plugins.resolver.RepositoryResolver.publish(RepositoryResolver.java:216)
Run Code Online (Sandbox Code Playgroud)
因为我们没有碰到版本号.现在我和哈希一起去:
./sbt publish || true
因此,作业不会退出1并且CI中出错.有没有更好的办法?
我有一些 rspec 测试来检查命令的输出。
以前,我嘲笑整个 $stdout.string 我可以这样做:
expect($stdout.string).to include 'DEBUG -- : Request Headers:'
expect($stdout.string).to include 'Bearer foo'
expect($stdout.string).to include 'Some other thing'
Run Code Online (Sandbox Code Playgroud)
我正在重构它以切换到 rspecoutput(arg).to_stdout
方法。
然而,查看文档,它似乎只允许给出字符串或正则表达式:
RSpec.describe "output.to_stdout matcher" do
specify { expect { print('foo') }.to output.to_stdout }
specify { expect { print('foo') }.to output('foo').to_stdout }
specify { expect { print('foo') }.to output(/foo/).to_stdout }
Run Code Online (Sandbox Code Playgroud)
我尝试链接期望,但没有成功:
expect { print 'foo bar baz' }.to output(/foo/).to_stdout.and output(/bar/).to_stdout.and output(/baz/).to_stdout
Run Code Online (Sandbox Code Playgroud)
给出结果:
Failure/Error: expect { print 'foo bar baz' }.to output(/foo/).to_stdout.and output(/bar/).to_stdout.and output(/baz/).to_stdout …
Run Code Online (Sandbox Code Playgroud) 我尝试实现一些使用的代码promise
,并从Ghost复制了一些源代码.但当我运行它时,我收到一个错误:
代码:
var Promise = require('bluebird')
var fs = require('fs')
var path = require('path')
var configPath = path.join(__dirname, '/config-example.js')
var configFile
function writeConfigFile(){
return new Promise(function(resolve,reject){
var read,
write,
error;
console.log('path->', configPath)
read = fs.createReadStream(configPath);
read.on('error', function(err){
console.log('Error->', err);
reject(err)
})
write = fs.createWriteStream(configFile)
write.on('error', function(err){
console.log('Error->',err)
reject(err)
})
write.on('finish', resolve)
read.pipe(write)
});
}
var p = writeConfigFile();
p.then(function(data){
console.log(data)
},function(data){
console.log('data->',data)
});
Run Code Online (Sandbox Code Playgroud)
错误输出
path-> /mnt/share/Learn/config-example.js
data-> [TypeError: path must be a string]
Error-> { [Error: ENOENT, open …
Run Code Online (Sandbox Code Playgroud) 确保文件存在和文件是否有意义?现在暗示它是一个文件还是该file { '/etc/sendmail':
行将其定义为文件?
class sendmail {
file { '/etc/sendmail':
ensure => directory,
mode => 755
}
file { '/etc/sendmail/sendmail.cf':
ensure => present,
ensure => file,
backup => false,
source => 'puppet:///mymodules/sendmail/sendmail.cf',
}
file { '/etc/sendmail/submit.cf':
ensure => present,
ensure => file,
backup => false,
source => 'puppet:///mymodules/sendmail/submit.cf',
}
service {'sendmail':
ensure => running
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Ruby中创建一个cli应用程序,它接受一个给定的数组,然后将其显示为一个列表,我可以使用箭头键进行浏览.
我觉得我已经在Ruby中看到了一个已经这样做的库,但是我不记得它的名字了.
我正在尝试对soundcloud2000中的代码进行反向工程以执行类似的操作,但他的代码与Soundcloud API的使用紧密相关.
我知道curses gem,我正在考虑更多抽象的东西.Ad
有没有人见过这样做的库或者一些可以做到这一点的概念证明Ruby代码?
Puppet Enterprise似乎安装在我的ubuntu 14.04服务器上:
root@puppet:/# puppet --version
3.8.5 (Puppet Enterprise 3.8.4)
Run Code Online (Sandbox Code Playgroud)
但是,木偶服务没有运行:
root@puppet:/# service puppet status
puppet: unrecognized service
Run Code Online (Sandbox Code Playgroud)
Puppet服务器似乎也正常工作,因为我可以在puppet master上执行以下命令:
root@puppet:/# puppet resource package nginx
package { 'nginx':
ensure => '1.4.6-1ubuntu3.4',
Run Code Online (Sandbox Code Playgroud)
即使在节点上运行'puppet agent -t'之后,Puppet证书列表也是空的:
root@puppet:/# puppet cert list
root@puppet:/#
Run Code Online (Sandbox Code Playgroud) 我希望根据平台使用不同的用户来运行ansible playbook.
例如,我有一个像这样的剧本:
---
- hosts: all
user: deploy
tasks:
- name: hello world
shell: echo "Hello World"
Run Code Online (Sandbox Code Playgroud)
我希望该用户在RedHat上运行时"部署",在Darwin/Mac系统上运行环境变量$ USER.
我该如何设置?
我正在使用Puppet开源版.
我发现Puppet 3.7.5中有几个组件:
但我不知道他们是如何相互合作的.我见过一个简单的架构,其中只包括puppet-master和puppet-agent.
至于其他组件,我不知道他们是如何合作的.任何人都可以给我一个关于他们如何合作或任何数据流图的详细信息吗?
我正在尝试解析 git 分支名称并拆分它们,以便我可以将远程名称和分支名称分开
以前我只是在第一个斜杠上拆分:
func ParseBranchname(branchString string) (remote, branchname string) {
branchArray := strings.Split(branchString, "/")
remote = branchArray[0]
branchname = branchArray[1]
return
}
Run Code Online (Sandbox Code Playgroud)
但我忘记了有些人也在 git 分支名称中使用斜杠,甚至多个!
现在我从分割中取出切片中的第一个元素,然后将每个元素移动一个完成并合并回斜线:
func ParseBranchname(branchString string) (remote, branchname string) {
branchArray := strings.Split(branchString, "/")
remote = branchArray[0]
copy(branchArray[0:], branchArray[0+1:])
branchArray[len(branchArray)-1] = ""
branchArray = branchArray[:len(branchArray)-1]
branchname = strings.Join(branchArray, "/")
return
}
Run Code Online (Sandbox Code Playgroud)
有没有更干净的方法来做到这一点?
我写了一个Puppet模块在Windows上安装Git.Puppet Master是Linux.
是否可以使用puppet资源(即没有脚本或exec)编写Puppet清单来克隆GitHub仓库?
这是一个私人仓库,因此解决方案需要包含安全凭证.