document.write('<link rel="stylesheet" href="http://gist.github.com/stylesheets/gist/embed.css"/>')





document.write('<div id=\"gist-111597\" class=\"gist\">\n  \n  \n    \n            \n\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n          \n          \n          \n            <div class=\"gist-highlight\"><pre><div class=\"line\" id=\"LC1\"><span class=\"n\">set<\/span> <span class=\"ss\">:sync_directories<\/span><span class=\"p\">,<\/span> <span class=\"o\">[<\/span><span class=\"s2\">&quot;assets&quot;<\/span><span class=\"p\">,<\/span> <span class=\"s2\">&quot;galleries&quot;<\/span><span class=\"o\">]<\/span><\/div><div class=\"line\" id=\"LC2\"><span class=\"n\">set<\/span> <span class=\"ss\">:sync_backups<\/span><span class=\"p\">,<\/span> <span class=\"mi\">3<\/span><\/div><\/pre><\/div>\n          \n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"http://gist.github.com/raw/111597/12324e898942601eb5ee02dbf09dc6892442014a/deploy.rb\" style=\"float:right;\">view raw<\/a>\n          <a href=\"http://gist.github.com/111597#file_deploy.rb\" style=\"float:right;margin-right:10px;color:#666\">deploy.rb<\/a>\n          <a href=\"http://gist.github.com/111597\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n    \n            \n\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n          \n          \n          \n            <div class=\"gist-highlight\"><pre><div class=\"line\" id=\"LC1\"><span class=\"nb\">require<\/span> <span class=\"s1\">&#39;yaml&#39;<\/span><\/div><div class=\"line\" id=\"LC2\">&nbsp;<\/div><div class=\"line\" id=\"LC3\"><span class=\"c1\">#<\/span><\/div><div class=\"line\" id=\"LC4\"><span class=\"c1\"># Capistrano sync.rb task for syncing databases and directories between the<\/span><\/div><div class=\"line\" id=\"LC5\"><span class=\"c1\"># local development environment and different multi_stage environments. You<\/span><\/div><div class=\"line\" id=\"LC6\"><span class=\"c1\"># cannot sync directly between two multi_stage environments, always use your<\/span><\/div><div class=\"line\" id=\"LC7\"><span class=\"c1\"># local machine as loop way.<\/span><\/div><div class=\"line\" id=\"LC8\"><span class=\"c1\">#<\/span><\/div><div class=\"line\" id=\"LC9\"><span class=\"c1\"># Author: Michael Kessler aka netzpirat<\/span><\/div><div class=\"line\" id=\"LC10\"><span class=\"c1\"># Gist:   111597<\/span><\/div><div class=\"line\" id=\"LC11\"><span class=\"c1\"># <\/span><\/div><div class=\"line\" id=\"LC12\"><span class=\"c1\"># Released under the MIT license. <\/span><\/div><div class=\"line\" id=\"LC13\"><span class=\"c1\"># Kindly sponsored by Screen Concept, www.screenconcept.ch<\/span><\/div><div class=\"line\" id=\"LC14\"><span class=\"c1\">#<\/span><\/div><div class=\"line\" id=\"LC15\"><span class=\"n\">namespace<\/span> <span class=\"ss\">:sync<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC16\">&nbsp;<\/div><div class=\"line\" id=\"LC17\">&nbsp;&nbsp;<span class=\"n\">after<\/span> <span class=\"s2\">&quot;deploy:setup&quot;<\/span><span class=\"p\">,<\/span> <span class=\"s2\">&quot;sync:setup&quot;<\/span><\/div><div class=\"line\" id=\"LC18\">&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC19\">&nbsp;&nbsp;<span class=\"n\">desc<\/span> <span class=\"o\">&lt;&lt;-<\/span><span class=\"no\">DESC<\/span><\/div><div class=\"line\" id=\"LC20\"><span class=\"sh\">    Creates the sync dir in shared path. The sync directory is used to keep<\/span><\/div><div class=\"line\" id=\"LC21\"><span class=\"sh\">    backups of database dumps and archives from synced directories. This task will<\/span><\/div><div class=\"line\" id=\"LC22\"><span class=\"sh\">    be called on &#39;deploy:setup&#39;<\/span><\/div><div class=\"line\" id=\"LC23\"><span class=\"no\">  DESC<\/span><\/div><div class=\"line\" id=\"LC24\">&nbsp;&nbsp;<span class=\"n\">task<\/span> <span class=\"ss\">:setup<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC25\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">run<\/span> <span class=\"s2\">&quot;cd <\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">; mkdir sync&quot;<\/span><\/div><div class=\"line\" id=\"LC26\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC27\">&nbsp;<\/div><div class=\"line\" id=\"LC28\">&nbsp;&nbsp;<span class=\"n\">namespace<\/span> <span class=\"ss\">:down<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC29\">&nbsp;<\/div><div class=\"line\" id=\"LC30\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">desc<\/span> <span class=\"o\">&lt;&lt;-<\/span><span class=\"no\">DESC<\/span><\/div><div class=\"line\" id=\"LC31\"><span class=\"sh\">      Syncs the database and declared directories from the selected multi_stage environment <\/span><\/div><div class=\"line\" id=\"LC32\"><span class=\"sh\">      to the local development environment. This task simply calls both the &#39;sync:down:db&#39; and <\/span><\/div><div class=\"line\" id=\"LC33\"><span class=\"sh\">      &#39;sync:down:fs&#39; tasks.<\/span><\/div><div class=\"line\" id=\"LC34\"><span class=\"no\">    DESC<\/span><\/div><div class=\"line\" id=\"LC35\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">task<\/span> <span class=\"ss\">:default<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC36\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">db<\/span> <span class=\"ow\">and<\/span> <span class=\"n\">fs<\/span><\/div><div class=\"line\" id=\"LC37\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC38\">&nbsp;<\/div><div class=\"line\" id=\"LC39\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">desc<\/span> <span class=\"o\">&lt;&lt;-<\/span><span class=\"no\">DESC<\/span><\/div><div class=\"line\" id=\"LC40\"><span class=\"sh\">      Syncs database from the selected mutli_stage environement to the local develoment environment.<\/span><\/div><div class=\"line\" id=\"LC41\"><span class=\"sh\">      The database credentials will be read from your local config/database.yml file and a copy of the<\/span><\/div><div class=\"line\" id=\"LC42\"><span class=\"sh\">      dump will be kept within the shared sync directory. The amount of backups that will be kept is<\/span><\/div><div class=\"line\" id=\"LC43\"><span class=\"sh\">      declared in the sync_backups variable and defaults to 5.<\/span><\/div><div class=\"line\" id=\"LC44\"><span class=\"no\">    DESC<\/span><\/div><div class=\"line\" id=\"LC45\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">task<\/span> <span class=\"ss\">:db<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:roles<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"ss\">:db<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:only<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span> <span class=\"ss\">:primary<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"kp\">true<\/span> <span class=\"p\">}<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC46\">&nbsp;<\/div><div class=\"line\" id=\"LC47\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">filename<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;database.<\/span><span class=\"si\">#{<\/span><span class=\"n\">stage<\/span><span class=\"si\">}<\/span><span class=\"s2\">.<\/span><span class=\"si\">#{<\/span><span class=\"no\">Time<\/span><span class=\"o\">.<\/span><span class=\"n\">now<\/span><span class=\"o\">.<\/span><span class=\"n\">strftime<\/span> <span class=\"s1\">&#39;%Y-%m-%d_%H:%M:%S&#39;<\/span><span class=\"si\">}<\/span><span class=\"s2\">.sql&quot;<\/span><\/div><div class=\"line\" id=\"LC48\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">on_rollback<\/span> <span class=\"p\">{<\/span> <span class=\"n\">delete<\/span> <span class=\"s2\">&quot;<\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">/sync/<\/span><span class=\"si\">#{<\/span><span class=\"n\">filename<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span> <span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC49\">&nbsp;<\/div><div class=\"line\" id=\"LC50\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c1\"># Remote DB dump<\/span><\/div><div class=\"line\" id=\"LC51\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">username<\/span><span class=\"p\">,<\/span> <span class=\"n\">password<\/span><span class=\"p\">,<\/span> <span class=\"n\">database<\/span> <span class=\"o\">=<\/span> <span class=\"n\">database_config<\/span><span class=\"p\">(<\/span><span class=\"n\">stage<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC52\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">run<\/span> <span class=\"s2\">&quot;mysqldump -u <\/span><span class=\"si\">#{<\/span><span class=\"n\">username<\/span><span class=\"si\">}<\/span><span class=\"s2\"> --password=&#39;<\/span><span class=\"si\">#{<\/span><span class=\"n\">password<\/span><span class=\"si\">}<\/span><span class=\"s2\">&#39; <\/span><span class=\"si\">#{<\/span><span class=\"n\">database<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &gt; <\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">/sync/<\/span><span class=\"si\">#{<\/span><span class=\"n\">filename<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">channel<\/span><span class=\"p\">,<\/span> <span class=\"n\">stream<\/span><span class=\"p\">,<\/span> <span class=\"n\">data<\/span><span class=\"o\">|<\/span><\/div><div class=\"line\" id=\"LC53\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nb\">puts<\/span> <span class=\"n\">data<\/span><\/div><div class=\"line\" id=\"LC54\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC55\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">purge_old_backups<\/span> <span class=\"s2\">&quot;database&quot;<\/span><\/div><div class=\"line\" id=\"LC56\">&nbsp;<\/div><div class=\"line\" id=\"LC57\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c1\"># Download dump<\/span><\/div><div class=\"line\" id=\"LC58\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">download<\/span> <span class=\"s2\">&quot;<\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">/sync/<\/span><span class=\"si\">#{<\/span><span class=\"n\">filename<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"p\">,<\/span> <span class=\"n\">filename<\/span><\/div><div class=\"line\" id=\"LC59\">&nbsp;<\/div><div class=\"line\" id=\"LC60\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c1\"># Local DB import<\/span><\/div><div class=\"line\" id=\"LC61\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">username<\/span><span class=\"p\">,<\/span> <span class=\"n\">password<\/span><span class=\"p\">,<\/span> <span class=\"n\">database<\/span> <span class=\"o\">=<\/span> <span class=\"n\">database_config<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;development&#39;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC62\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nb\">system<\/span> <span class=\"s2\">&quot;mysql -u <\/span><span class=\"si\">#{<\/span><span class=\"n\">username<\/span><span class=\"si\">}<\/span><span class=\"s2\"> --password=&#39;<\/span><span class=\"si\">#{<\/span><span class=\"n\">password<\/span><span class=\"si\">}<\/span><span class=\"s2\">&#39; <\/span><span class=\"si\">#{<\/span><span class=\"n\">database<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &lt; <\/span><span class=\"si\">#{<\/span><span class=\"n\">filename<\/span><span class=\"si\">}<\/span><span class=\"s2\">; rm -f <\/span><span class=\"si\">#{<\/span><span class=\"n\">filename<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC63\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC64\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">logger<\/span><span class=\"o\">.<\/span><span class=\"n\">important<\/span> <span class=\"s2\">&quot;sync database from the stage &#39;<\/span><span class=\"si\">#{<\/span><span class=\"n\">stage<\/span><span class=\"si\">}<\/span><span class=\"s2\">&#39; to local finished&quot;<\/span><\/div><div class=\"line\" id=\"LC65\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC66\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC67\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">desc<\/span> <span class=\"o\">&lt;&lt;-<\/span><span class=\"no\">DESC<\/span><\/div><div class=\"line\" id=\"LC68\"><span class=\"sh\">      Sync declared shared directories from the selected multi_stage environment to the local development<\/span><\/div><div class=\"line\" id=\"LC69\"><span class=\"sh\">      environment. The synced directories must be declared as an array of Strings with the sync_directories <\/span><\/div><div class=\"line\" id=\"LC70\"><span class=\"sh\">      variable and all entries will be prefixed with &#39;public&#39;.<\/span><\/div><div class=\"line\" id=\"LC71\"><span class=\"no\">    DESC<\/span><\/div><div class=\"line\" id=\"LC72\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">task<\/span> <span class=\"ss\">:fs<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:roles<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"ss\">:web<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:once<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"kp\">true<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC73\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC74\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">server<\/span><span class=\"p\">,<\/span> <span class=\"n\">port<\/span> <span class=\"o\">=<\/span> <span class=\"n\">host_and_port<\/span><\/div><div class=\"line\" id=\"LC75\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC76\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nb\">Array<\/span><span class=\"p\">(<\/span><span class=\"n\">fetch<\/span><span class=\"p\">(<\/span><span class=\"ss\">:sync_directories<\/span><span class=\"p\">,<\/span> <span class=\"o\">[]<\/span><span class=\"p\">))<\/span><span class=\"o\">.<\/span><span class=\"n\">each<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">syncdir<\/span><span class=\"o\">|<\/span><\/div><div class=\"line\" id=\"LC77\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">unless<\/span> <span class=\"no\">File<\/span><span class=\"o\">.<\/span><span class=\"n\">directory?<\/span> <span class=\"s2\">&quot;public/<\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC78\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">logger<\/span><span class=\"o\">.<\/span><span class=\"n\">info<\/span> <span class=\"s2\">&quot;create local &#39;<\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\">&#39; folder&quot;<\/span><\/div><div class=\"line\" id=\"LC79\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"no\">Dir<\/span><span class=\"o\">.<\/span><span class=\"n\">mkdir<\/span> <span class=\"s2\">&quot;public/<\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>	  <\/div><div class=\"line\" id=\"LC80\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC81\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">logger<\/span><span class=\"o\">.<\/span><span class=\"n\">info<\/span> <span class=\"s2\">&quot;sync public/<\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\"> from <\/span><span class=\"si\">#{<\/span><span class=\"n\">server<\/span><span class=\"si\">}<\/span><span class=\"s2\">:<\/span><span class=\"si\">#{<\/span><span class=\"n\">port<\/span><span class=\"si\">}<\/span><span class=\"s2\"> to local&quot;<\/span><\/div><div class=\"line\" id=\"LC82\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nb\">system<\/span> <span class=\"s2\">&quot;rsync -e &#39;ssh -p <\/span><span class=\"si\">#{<\/span><span class=\"n\">port<\/span><span class=\"si\">}<\/span><span class=\"s2\">&#39; -avl --delete --stats <\/span><span class=\"si\">#{<\/span><span class=\"n\">server<\/span><span class=\"si\">}<\/span><span class=\"s2\">:<\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">/<\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\"> public&quot;<\/span><\/div><div class=\"line\" id=\"LC83\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC84\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC85\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">logger<\/span><span class=\"o\">.<\/span><span class=\"n\">important<\/span> <span class=\"s2\">&quot;sync filesystem from the stage &#39;<\/span><span class=\"si\">#{<\/span><span class=\"n\">stage<\/span><span class=\"si\">}<\/span><span class=\"s2\">&#39; to local finished&quot;<\/span><\/div><div class=\"line\" id=\"LC86\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC87\">&nbsp;<\/div><div class=\"line\" id=\"LC88\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC89\">&nbsp;<\/div><div class=\"line\" id=\"LC90\">&nbsp;&nbsp;<span class=\"n\">namespace<\/span> <span class=\"ss\">:up<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC91\">&nbsp;<\/div><div class=\"line\" id=\"LC92\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">desc<\/span> <span class=\"o\">&lt;&lt;-<\/span><span class=\"no\">DESC<\/span><\/div><div class=\"line\" id=\"LC93\"><span class=\"sh\">      Syncs the database and declared directories from the local development environment<\/span><\/div><div class=\"line\" id=\"LC94\"><span class=\"sh\">      to the selected multi_stage environment. This task simply calls both the &#39;sync:up:db&#39; and <\/span><\/div><div class=\"line\" id=\"LC95\"><span class=\"sh\">      &#39;sync:up:fs&#39; tasks.<\/span><\/div><div class=\"line\" id=\"LC96\"><span class=\"no\">    DESC<\/span><\/div><div class=\"line\" id=\"LC97\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">task<\/span> <span class=\"ss\">:default<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC98\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">db<\/span> <span class=\"ow\">and<\/span> <span class=\"n\">fs<\/span><\/div><div class=\"line\" id=\"LC99\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC100\">&nbsp;<\/div><div class=\"line\" id=\"LC101\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">desc<\/span> <span class=\"o\">&lt;&lt;-<\/span><span class=\"no\">DESC<\/span><\/div><div class=\"line\" id=\"LC102\"><span class=\"sh\">      Syncs database from the local develoment environment to the selected mutli_stage environement.<\/span><\/div><div class=\"line\" id=\"LC103\"><span class=\"sh\">      The database credentials will be read from your local config/database.yml file and a copy of the<\/span><\/div><div class=\"line\" id=\"LC104\"><span class=\"sh\">      dump will be kept within the shared sync directory. The amount of backups that will be kept is<\/span><\/div><div class=\"line\" id=\"LC105\"><span class=\"sh\">      declared in the sync_backups variable and defaults to 5.<\/span><\/div><div class=\"line\" id=\"LC106\"><span class=\"no\">    DESC<\/span><\/div><div class=\"line\" id=\"LC107\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">task<\/span> <span class=\"ss\">:db<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:roles<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"ss\">:db<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:only<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span> <span class=\"ss\">:primary<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"kp\">true<\/span> <span class=\"p\">}<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC108\">&nbsp;<\/div><div class=\"line\" id=\"LC109\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">filename<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;database.<\/span><span class=\"si\">#{<\/span><span class=\"n\">stage<\/span><span class=\"si\">}<\/span><span class=\"s2\">.<\/span><span class=\"si\">#{<\/span><span class=\"no\">Time<\/span><span class=\"o\">.<\/span><span class=\"n\">now<\/span><span class=\"o\">.<\/span><span class=\"n\">strftime<\/span> <span class=\"s1\">&#39;%Y-%m-%d_%H:%M:%S&#39;<\/span><span class=\"si\">}<\/span><span class=\"s2\">.sql&quot;<\/span><\/div><div class=\"line\" id=\"LC110\">&nbsp;<\/div><div class=\"line\" id=\"LC111\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">on_rollback<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC112\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">delete<\/span> <span class=\"s2\">&quot;<\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">/sync/<\/span><span class=\"si\">#{<\/span><span class=\"n\">filename<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC113\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nb\">system<\/span> <span class=\"s2\">&quot;rm -f <\/span><span class=\"si\">#{<\/span><span class=\"n\">filename<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC114\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC115\">&nbsp;<\/div><div class=\"line\" id=\"LC116\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c1\"># Make a backup before importing<\/span><\/div><div class=\"line\" id=\"LC117\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">username<\/span><span class=\"p\">,<\/span> <span class=\"n\">password<\/span><span class=\"p\">,<\/span> <span class=\"n\">database<\/span> <span class=\"o\">=<\/span> <span class=\"n\">database_config<\/span><span class=\"p\">(<\/span><span class=\"n\">stage<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC118\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">run<\/span> <span class=\"s2\">&quot;mysqldump -u <\/span><span class=\"si\">#{<\/span><span class=\"n\">username<\/span><span class=\"si\">}<\/span><span class=\"s2\"> --password=&#39;<\/span><span class=\"si\">#{<\/span><span class=\"n\">password<\/span><span class=\"si\">}<\/span><span class=\"s2\">&#39; <\/span><span class=\"si\">#{<\/span><span class=\"n\">database<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &gt; <\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">/sync/<\/span><span class=\"si\">#{<\/span><span class=\"n\">filename<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">channel<\/span><span class=\"p\">,<\/span> <span class=\"n\">stream<\/span><span class=\"p\">,<\/span> <span class=\"n\">data<\/span><span class=\"o\">|<\/span><\/div><div class=\"line\" id=\"LC119\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nb\">puts<\/span> <span class=\"n\">data<\/span><\/div><div class=\"line\" id=\"LC120\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC121\">&nbsp;<\/div><div class=\"line\" id=\"LC122\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c1\"># Local DB export<\/span><\/div><div class=\"line\" id=\"LC123\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">filename<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;dump.local.<\/span><span class=\"si\">#{<\/span><span class=\"no\">Time<\/span><span class=\"o\">.<\/span><span class=\"n\">now<\/span><span class=\"o\">.<\/span><span class=\"n\">strftime<\/span> <span class=\"s1\">&#39;%Y-%m-%d_%H:%M:%S&#39;<\/span><span class=\"si\">}<\/span><span class=\"s2\">.sql&quot;<\/span><\/div><div class=\"line\" id=\"LC124\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">username<\/span><span class=\"p\">,<\/span> <span class=\"n\">password<\/span><span class=\"p\">,<\/span> <span class=\"n\">database<\/span> <span class=\"o\">=<\/span> <span class=\"n\">database_config<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;development&#39;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC125\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nb\">system<\/span> <span class=\"s2\">&quot;mysqldump -u <\/span><span class=\"si\">#{<\/span><span class=\"n\">username<\/span><span class=\"si\">}<\/span><span class=\"s2\"> --password=&#39;<\/span><span class=\"si\">#{<\/span><span class=\"n\">password<\/span><span class=\"si\">}<\/span><span class=\"s2\">&#39; <\/span><span class=\"si\">#{<\/span><span class=\"n\">database<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &gt; <\/span><span class=\"si\">#{<\/span><span class=\"n\">filename<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC126\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">upload<\/span> <span class=\"n\">filename<\/span><span class=\"p\">,<\/span> <span class=\"s2\">&quot;<\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">/sync/<\/span><span class=\"si\">#{<\/span><span class=\"n\">filename<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC127\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nb\">system<\/span> <span class=\"s2\">&quot;rm -f <\/span><span class=\"si\">#{<\/span><span class=\"n\">filename<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC128\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC129\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c1\"># Remote DB import<\/span><\/div><div class=\"line\" id=\"LC130\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">username<\/span><span class=\"p\">,<\/span> <span class=\"n\">password<\/span><span class=\"p\">,<\/span> <span class=\"n\">database<\/span> <span class=\"o\">=<\/span> <span class=\"n\">database_config<\/span><span class=\"p\">(<\/span><span class=\"n\">stage<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC131\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">run<\/span> <span class=\"s2\">&quot;mysql -u <\/span><span class=\"si\">#{<\/span><span class=\"n\">username<\/span><span class=\"si\">}<\/span><span class=\"s2\"> --password=&#39;<\/span><span class=\"si\">#{<\/span><span class=\"n\">password<\/span><span class=\"si\">}<\/span><span class=\"s2\">&#39; <\/span><span class=\"si\">#{<\/span><span class=\"n\">database<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &lt; <\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">/sync/<\/span><span class=\"si\">#{<\/span><span class=\"n\">filename<\/span><span class=\"si\">}<\/span><span class=\"s2\">; rm -f <\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">/sync/<\/span><span class=\"si\">#{<\/span><span class=\"n\">filename<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC132\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">purge_old_backups<\/span> <span class=\"s2\">&quot;database&quot;<\/span><\/div><div class=\"line\" id=\"LC133\">&nbsp;<\/div><div class=\"line\" id=\"LC134\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">logger<\/span><span class=\"o\">.<\/span><span class=\"n\">important<\/span> <span class=\"s2\">&quot;sync database from local to the stage &#39;<\/span><span class=\"si\">#{<\/span><span class=\"n\">stage<\/span><span class=\"si\">}<\/span><span class=\"s2\">&#39; finished&quot;<\/span><\/div><div class=\"line\" id=\"LC135\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC136\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC137\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">desc<\/span> <span class=\"o\">&lt;&lt;-<\/span><span class=\"no\">DESC<\/span><\/div><div class=\"line\" id=\"LC138\"><span class=\"sh\">      Sync declared shared directories from the local development environement to the selected multi_stage<\/span><\/div><div class=\"line\" id=\"LC139\"><span class=\"sh\">      environment. The synced directories must be declared as an array of Strings with the sync_directories <\/span><\/div><div class=\"line\" id=\"LC140\"><span class=\"sh\">      variable and all entries will be prefixed with &#39;public&#39;.<\/span><\/div><div class=\"line\" id=\"LC141\"><span class=\"no\">    DESC<\/span><\/div><div class=\"line\" id=\"LC142\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">task<\/span> <span class=\"ss\">:fs<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:roles<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"ss\">:web<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:once<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"kp\">true<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC143\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC144\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">server<\/span><span class=\"p\">,<\/span> <span class=\"n\">port<\/span> <span class=\"o\">=<\/span> <span class=\"n\">host_and_port<\/span><\/div><div class=\"line\" id=\"LC145\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nb\">Array<\/span><span class=\"p\">(<\/span><span class=\"n\">fetch<\/span><span class=\"p\">(<\/span><span class=\"ss\">:sync_directories<\/span><span class=\"p\">,<\/span> <span class=\"o\">[]<\/span><span class=\"p\">))<\/span><span class=\"o\">.<\/span><span class=\"n\">each<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">syncdir<\/span><span class=\"o\">|<\/span><\/div><div class=\"line\" id=\"LC146\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">if<\/span> <span class=\"no\">File<\/span><span class=\"o\">.<\/span><span class=\"n\">directory?<\/span> <span class=\"s2\">&quot;public/<\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC147\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c1\"># Make a backup<\/span><\/div><div class=\"line\" id=\"LC148\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">logger<\/span><span class=\"o\">.<\/span><span class=\"n\">info<\/span> <span class=\"s2\">&quot;backup <\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC149\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">run<\/span> <span class=\"s2\">&quot;tar cf <\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">/sync/<\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\">.<\/span><span class=\"si\">#{<\/span><span class=\"no\">Time<\/span><span class=\"o\">.<\/span><span class=\"n\">now<\/span><span class=\"o\">.<\/span><span class=\"n\">strftime<\/span> <span class=\"s1\">&#39;%Y-%m-%d_%H:%M:%S&#39;<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar <\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">/<\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC150\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">purge_old_backups<\/span> <span class=\"s2\">&quot;<\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC151\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">else<\/span><\/div><div class=\"line\" id=\"LC152\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">logger<\/span><span class=\"o\">.<\/span><span class=\"n\">info<\/span> <span class=\"s2\">&quot;Create shared &#39;<\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\">&#39; directory&quot;<\/span><\/div><div class=\"line\" id=\"LC153\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">run<\/span> <span class=\"s2\">&quot;mkdir <\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">/<\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC154\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC155\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC156\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"c1\"># Sync directory up<\/span><\/div><div class=\"line\" id=\"LC157\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">logger<\/span><span class=\"o\">.<\/span><span class=\"n\">info<\/span> <span class=\"s2\">&quot;sync public/<\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\"> to <\/span><span class=\"si\">#{<\/span><span class=\"n\">server<\/span><span class=\"si\">}<\/span><span class=\"s2\">:<\/span><span class=\"si\">#{<\/span><span class=\"n\">port<\/span><span class=\"si\">}<\/span><span class=\"s2\"> from local&quot;<\/span><\/div><div class=\"line\" id=\"LC158\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nb\">system<\/span> <span class=\"s2\">&quot;rsync -avlze &#39;ssh -p <\/span><span class=\"si\">#{<\/span><span class=\"n\">port<\/span><span class=\"si\">}<\/span><span class=\"s2\">&#39; public/<\/span><span class=\"si\">#{<\/span><span class=\"n\">syncdir<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">#{<\/span><span class=\"n\">server<\/span><span class=\"si\">}<\/span><span class=\"s2\">:<\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC159\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC160\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">logger<\/span><span class=\"o\">.<\/span><span class=\"n\">important<\/span> <span class=\"s2\">&quot;sync filesystem from local to the stage &#39;<\/span><span class=\"si\">#{<\/span><span class=\"n\">stage<\/span><span class=\"si\">}<\/span><span class=\"s2\">&#39; finished&quot;<\/span><\/div><div class=\"line\" id=\"LC161\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC162\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC163\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC164\">&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC165\">&nbsp;&nbsp;<span class=\"c1\">#<\/span><\/div><div class=\"line\" id=\"LC166\">&nbsp;&nbsp;<span class=\"c1\"># Reads the database credentials from the local config/database.yml file<\/span><\/div><div class=\"line\" id=\"LC167\">&nbsp;&nbsp;<span class=\"c1\"># +db+ the name of the environment to get the credentials for<\/span><\/div><div class=\"line\" id=\"LC168\">&nbsp;&nbsp;<span class=\"c1\"># Returns username, password, database<\/span><\/div><div class=\"line\" id=\"LC169\">&nbsp;&nbsp;<span class=\"c1\">#<\/span><\/div><div class=\"line\" id=\"LC170\">&nbsp;&nbsp;<span class=\"k\">def<\/span> <span class=\"nf\">database_config<\/span><span class=\"p\">(<\/span><span class=\"n\">db<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC171\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">database<\/span> <span class=\"o\">=<\/span> <span class=\"no\">YAML<\/span><span class=\"o\">::<\/span><span class=\"n\">load_file<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;config/database.yml&#39;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC172\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">return<\/span> <span class=\"n\">database<\/span><span class=\"o\">[<\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">#{<\/span><span class=\"n\">db<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"o\">][<\/span><span class=\"s1\">&#39;username&#39;<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span> <span class=\"n\">database<\/span><span class=\"o\">[<\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">#{<\/span><span class=\"n\">db<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"o\">][<\/span><span class=\"s1\">&#39;password&#39;<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span> <span class=\"n\">database<\/span><span class=\"o\">[<\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">#{<\/span><span class=\"n\">db<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"o\">][<\/span><span class=\"s1\">&#39;database&#39;<\/span><span class=\"o\">]<\/span><\/div><div class=\"line\" id=\"LC173\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC174\">&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC175\">&nbsp;&nbsp;<span class=\"c1\">#<\/span><\/div><div class=\"line\" id=\"LC176\">&nbsp;&nbsp;<span class=\"c1\"># Returns the actual host name to sync and port<\/span><\/div><div class=\"line\" id=\"LC177\">&nbsp;&nbsp;<span class=\"c1\">#<\/span><\/div><div class=\"line\" id=\"LC178\">&nbsp;&nbsp;<span class=\"k\">def<\/span> <span class=\"nf\">host_and_port<\/span><\/div><div class=\"line\" id=\"LC179\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">return<\/span> <span class=\"n\">roles<\/span><span class=\"o\">[<\/span><span class=\"ss\">:web<\/span><span class=\"o\">].<\/span><span class=\"n\">servers<\/span><span class=\"o\">.<\/span><span class=\"n\">first<\/span><span class=\"o\">.<\/span><span class=\"n\">host<\/span><span class=\"p\">,<\/span> <span class=\"n\">ssh_options<\/span><span class=\"o\">[<\/span><span class=\"ss\">:port<\/span><span class=\"o\">]<\/span> <span class=\"o\">||<\/span> <span class=\"n\">roles<\/span><span class=\"o\">[<\/span><span class=\"ss\">:web<\/span><span class=\"o\">].<\/span><span class=\"n\">servers<\/span><span class=\"o\">.<\/span><span class=\"n\">first<\/span><span class=\"o\">.<\/span><span class=\"n\">port<\/span> <span class=\"o\">||<\/span> <span class=\"mi\">22<\/span><\/div><div class=\"line\" id=\"LC180\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC181\">&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC182\">&nbsp;&nbsp;<span class=\"c1\">#<\/span><\/div><div class=\"line\" id=\"LC183\">&nbsp;&nbsp;<span class=\"c1\"># Purge old backups within the shared sync directory<\/span><\/div><div class=\"line\" id=\"LC184\">&nbsp;&nbsp;<span class=\"c1\">#<\/span><\/div><div class=\"line\" id=\"LC185\">&nbsp;&nbsp;<span class=\"k\">def<\/span> <span class=\"nf\">purge_old_backups<\/span><span class=\"p\">(<\/span><span class=\"n\">base<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC186\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">count<\/span> <span class=\"o\">=<\/span> <span class=\"n\">fetch<\/span><span class=\"p\">(<\/span><span class=\"ss\">:sync_backups<\/span><span class=\"p\">,<\/span> <span class=\"mi\">5<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">to_i<\/span><\/div><div class=\"line\" id=\"LC187\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">backup_files<\/span> <span class=\"o\">=<\/span> <span class=\"n\">capture<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;ls -xt <\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">/sync/<\/span><span class=\"si\">#{<\/span><span class=\"n\">base<\/span><span class=\"si\">}<\/span><span class=\"s2\">*&quot;<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">split<\/span><span class=\"o\">.<\/span><span class=\"n\">reverse<\/span><\/div><div class=\"line\" id=\"LC188\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">if<\/span> <span class=\"n\">count<\/span> <span class=\"o\">&gt;=<\/span> <span class=\"n\">backup_files<\/span><span class=\"o\">.<\/span><span class=\"n\">length<\/span><\/div><div class=\"line\" id=\"LC189\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">logger<\/span><span class=\"o\">.<\/span><span class=\"n\">important<\/span> <span class=\"s2\">&quot;no old backups to clean up&quot;<\/span><\/div><div class=\"line\" id=\"LC190\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">else<\/span><\/div><div class=\"line\" id=\"LC191\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">logger<\/span><span class=\"o\">.<\/span><span class=\"n\">info<\/span> <span class=\"s2\">&quot;keeping <\/span><span class=\"si\">#{<\/span><span class=\"n\">count<\/span><span class=\"si\">}<\/span><span class=\"s2\"> of <\/span><span class=\"si\">#{<\/span><span class=\"n\">backup_files<\/span><span class=\"o\">.<\/span><span class=\"n\">length<\/span><span class=\"si\">}<\/span><span class=\"s2\"> sync backups&quot;<\/span><\/div><div class=\"line\" id=\"LC192\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">delete_backups<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"n\">backup_files<\/span> <span class=\"o\">-<\/span> <span class=\"n\">backup_files<\/span><span class=\"o\">.<\/span><span class=\"n\">last<\/span><span class=\"p\">(<\/span><span class=\"n\">count<\/span><span class=\"p\">))<\/span><span class=\"o\">.<\/span><span class=\"n\">join<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot; &quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC193\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">try_sudo<\/span> <span class=\"s2\">&quot;rm -rf <\/span><span class=\"si\">#{<\/span><span class=\"n\">delete_backups<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><\/div><div class=\"line\" id=\"LC194\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC195\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC196\">&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC197\"><span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC198\">&nbsp;<\/div><\/pre><\/div>\n          \n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"http://gist.github.com/raw/111597/50e7aba9f1510bd9477d0628e120322328659370/sync.rb\" style=\"float:right;\">view raw<\/a>\n          <a href=\"http://gist.github.com/111597#file_sync.rb\" style=\"float:right;margin-right:10px;color:#666\">sync.rb<\/a>\n          <a href=\"http://gist.github.com/111597\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n    \n  \n<\/div>\n')
