rubybarcamp #3 - ruby non web for webdevelopmen, stanislav o. pogrebnyak
TRANSCRIPT
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
1/17
Ruby Non Web for Webdevelopment
Stanislav O. Pogrebnyak
http://www.gera-it.com
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
2/17
*nix admin's best friends:
shell
perl
python
Ruby? Really?
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
3/17
Daemonshttp://daemons.rubyforge.org
*nix (start|stop|restart|run)
fork - pid
, stdout
monit, God ..
> gem install daemons
Windows run
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
4/17
# "" :
require 'rubygems'
require 'daemons'
Daemons.run('myserver.rb')
# "" :
Daemons.daemonize # (start|stop)
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
5/17
# Rails:
require 'rubygems'require 'daemons'
Dir.chdir(APP_DIR)require File.join('config', 'environment')
Daemons.run_proc( Actions runner ) doAllModels.do_all_actions
end
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
6/17
> ruby my_daemon.rb start
> ruby my_daemon.rb stop
> ruby my_daemon.rb restart
( Windows )> ruby my_daemon.rb run
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
7/17
RobustThreads
Daemon Kit
Looper
fork
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
8/17
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
9/17
rufus-scheduler
require 'rubygems'require 'rufus/scheduler'scheduler = Rufus::Scheduler.start_newscheduler.in '20m' do
puts "order ristretto"
endscheduler.at 'Thu Mar 26 07:31:43 +0900 2009' do
puts 'order pizza'endscheduler.cron '0 22 * * 1-5' do
puts 'activate security system'endscheduler.every '5m' do
puts 'check blood pressure'endscheduler.join
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
10/17
Daemons + rufus-scheduler
cron
capistrano
monit, God ..
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
11/17
require 'rubygems'require 'daemons'require 'rufus/scheduler'
Daemons.run_proc( "drink coffee scheduler" ) doscheduler = Rufus::Scheduler.newscheduler.start
scheduler.schedule_every "1h" doputs "Its time to drink a cap of coffee or tea!"endscheduler.join
end
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
12/17
Ruby Networking
Net::\HTTP/HTTPsFTPSFTP
SSHSCP
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
13/17
Net::HTTP(HTTPs)
HEAD/PUT/GET/POST/DELETE
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
14/17
Net::FTP
ftp
:
ftp = Net::FTP.new('ftp.netlab.co.jp')
ftp.loginfiles = ftp.list('n*')ftp.getbinaryfile('nif.rb-0.91.gz', 'nif.gz', 1024)ftp.close
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
15/17
Net::(SFTP/SCP/SSH)http://net-ssh.rubyforge.org
Net::SSH ,
Net::SCP
Net::SFTP FTP Net::SSH
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
16/17
Net::(SFTP/SCP/SSH) :
require 'net/ssh'Net::SSH.start( google.com, larry, :password => love")do |ssh|
ssh.exec!(rm rf ~/docs)
ssh.exec (cd ~/work && nohup ruby grab.rb)ssh.exec (cd ~/work && nohup ruby download.rb)ssh.loop # ssh.sftp.download!("/path/to/remote")downloads = []
downloads
-
8/7/2019 RubyBarcamp #3 - Ruby Non Web for Webdevelopmen, Stanislav O. Pogrebnyak
17/17
?