3. Starting your VM
cd metacpan/metacpan-developer
vagrant up
vagrant ssh
Thursday, 30 January, 14
4. Just become metacpan
For almost everything, you'll be
better off as the metacpan user
So, "sudo su metacpan" whenever you
start an SSH session
Thursday, 30 January, 14
5. Running web tests
sudo su metacpan
cd ~/metacpan.org
prove -lvr t
Thursday, 30 January, 14
6. Running api tests
# run Elasticsearch in the foreground
# you don't have to stop elasticsearch, but it saves some resources
vagrant ssh
sudo /etc/init.d/elasticsearch stop
sudo /opt/elasticsearch-0.20.2/bin/elasticsearch -f
-Des.http.port=9900 -Des.cluster.name=testing
# log in with a new session to run the tests
# don't pass the -r flag to prove
vagrant ssh
sudo su metacpan
cd ~/api.metacpan.org
source ~/.metacpanrc
prove -lv t
Thursday, 30 January, 14
10. Installing Modules
# front end deps
sudo su metacpan
cd ~/metacpan.org
sudo ~/bin/install_modules --installdeps .
# api deps
cd ~/api.metacpan.org
sudo ~/bin/install_modules --installdeps .
# install some arbitrary module
sudo ~/bin/install_modules Acme::Urinal
Thursday, 30 January, 14
11. Prefer plackup?
# front end
sudo su metacpan
cd ~/metacpan.org
/etc/init.d/metacpan-www stop
plackup -R lib --port 5001
# api
cd ~/api.metacpan.org
/etc/init.d/metacpan-api stop
plackup -R lib --port 5000
Thursday, 30 January, 14
12. Prefer carton?
# assumes you are "metacpan" and have stopped services
# front end
cd ~/metacpan.org
carton install
carton exec plackup -R lib --port 5001
# api
cd ~/api.metacpan.org
carton install
carton exec plackup -R lib --port 5000
Thursday, 30 January, 14
14. Playing with Puppet
# on the host, in the dev directory you created
cd metacpan/metacpan-puppet
# let's add a new binary (ncdu) to the system
vi modules/metacpan/manifests/packages.pp
package { ncdu: ensure => present }
cd ../../metacpan-developer
vagrant provision
Thursday, 30 January, 14