[{"data":1,"prerenderedAt":1924},["ShallowReactive",2],{"post:\u002F2018\u002F06\u002F18\u002Fruby-desktop-application-publish-a-roo-9000":3},{"id":4,"title":5,"body":6,"date":1916,"description":12,"extension":1917,"meta":1918,"navigation":246,"path":1919,"seo":1920,"stem":1921,"subtitle":1922,"__hash__":1923},"posts\u002F2018\u002F06\u002F18\u002Fruby-desktop-application-publish-a-roo-9000.md","Ruby Desktop Application - Publish-a-roo 9000",{"type":7,"value":8,"toc":1914},"minimark",[9,13,16,32,40,43,52,124,127,134,137,511,517,525,528,1901,1904,1910],[10,11,12],"p",{},"This project, like many was born from laziness and my general loathing for the mundane and the repetitive. It began its life as a humble command line program for publishing tasks. Known simply as the publish-a-roo, because of it's proficiency for lessening my workload it grew organically. And like some kind of grotesque coded caterpillar, it soon developed into a beautiful GUI Desktop application butterfly.",[10,14,15],{},"Anyone reading this outside the team I worked with in Microsoft will almost certainly have no interest in it, but it is the first Desktop application I have created using Ruby so I thought I'd do quick write up on it.",[10,17,18,25,26,31],{},[19,20,24],"a",{"href":21,"rel":22},"http:\u002F\u002Fshoesrb.com\u002F",[23],"nofollow","Shoes"," is a handy, albeit turbulent way of creating a GUI desktop application using Ruby. It's actually pretty cool, like most ruby projects it's open source, but much of the credit belongs to the (once) elusive ",[19,27,30],{"href":28,"rel":29},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWhy_the_lucky_stiff",[23],"_why",", who has been maintaining it since 2012.",[10,33,34,35,39],{},"The problem was that working in Microsoft I was tasked with using as CMS, which I soon learned to be just an abbreviation for the ways in which it made me feel; Cantankerous, Melancholy and Spiteful. Within this CMS, navigation was the most time consuming aspect of making changes, picture walking waist deep, through a pool of molasses. I needed a new way, and so the Publish-a-roo ",[36,37,38],"em",{},"9000"," was born",[10,41,42],{},"Lets begin using shoes:",[10,44,45,46,51],{},"I'm going to skip the ",[19,47,50],{"href":48,"rel":49},"http:\u002F\u002Fshoesrb.com\u002Fmanual\u002FInstalling.html",[23],"Download and Installation"," and get straight into it:",[53,54,59],"pre",{"className":55,"code":56,"language":57,"meta":58,"style":58},"language-ruby shiki shiki-themes github-dark","Shoes.app(title: \"Publish-a-roo 9000\", width: 280) do\n    para(\"hello world\")\nend\n","ruby","",[60,61,62,104,118],"code",{"__ignoreMap":58},[63,64,67,70,74,78,81,84,88,91,94,97,100],"span",{"class":65,"line":66},"line",1,[63,68,24],{"class":69},"sDLfK",[63,71,73],{"class":72},"s95oV",".",[63,75,77],{"class":76},"svObZ","app",[63,79,80],{"class":72},"(",[63,82,83],{"class":69},"title:",[63,85,87],{"class":86},"sU2Wk"," \"Publish-a-roo 9000\"",[63,89,90],{"class":72},", ",[63,92,93],{"class":69},"width:",[63,95,96],{"class":69}," 280",[63,98,99],{"class":72},") ",[63,101,103],{"class":102},"snl16","do\n",[63,105,107,110,112,115],{"class":65,"line":106},2,[63,108,109],{"class":76},"    para",[63,111,80],{"class":72},[63,113,114],{"class":86},"\"hello world\"",[63,116,117],{"class":72},")\n",[63,119,121],{"class":65,"line":120},3,[63,122,123],{"class":102},"end\n",[10,125,126],{},"Here's the bare bones GUI, with a title and a width value and string.",[10,128,129],{},[130,131],"img",{"alt":132,"src":133},"alt","\u002Fimages\u002Fposts\u002F2018\u002F06\u002Fpbr_blog.PNG",[10,135,136],{},"Exciting stuff, lets go wild and add in some input fields and buttons, maybe even a cheeky dropdown menu and assign them values for later.",[53,138,140],{"className":55,"code":139,"language":57,"meta":58,"style":58},"Shoes.app(title: \"Publish-a-roo 9000\", width: 280) do\n  stack(margin: 30) do\n    @locale = para \" \", hidden: true\n    @bids = para \" \", hidden: true\n    @destination = para \" \", hidden: true\n\n    para \"Enter Locale:\"\n    @input_1 = edit_line do |a|\n      @locale.text = @input_1.text\n    end\n\n    flow do\n      @multi_locale = check\n      para \"multiple locales\"\n    end\n\n    para \"Enter BIDs\"\n    @input_2 = edit_box do |b|\n      @bids.text = @input_2.text\n    end\n\n    para \"Choose a destination:\"\n    @input_3 = list_box items: [\"a value\",\"another value\".\"one here too\"] do |c|\n      where_to = @input_3.text\n    end\n\n    @button = button(\"open link\", margin: 40) do\n      # something cool\n    end\n  end\nend\n",[60,141,142,166,183,205,223,241,248,257,274,292,298,303,311,322,331,336,341,349,365,380,385,390,398,437,451,456,461,488,495,500,506],{"__ignoreMap":58},[63,143,144,146,148,150,152,154,156,158,160,162,164],{"class":65,"line":66},[63,145,24],{"class":69},[63,147,73],{"class":72},[63,149,77],{"class":76},[63,151,80],{"class":72},[63,153,83],{"class":69},[63,155,87],{"class":86},[63,157,90],{"class":72},[63,159,93],{"class":69},[63,161,96],{"class":69},[63,163,99],{"class":72},[63,165,103],{"class":102},[63,167,168,171,173,176,179,181],{"class":65,"line":106},[63,169,170],{"class":76},"  stack",[63,172,80],{"class":72},[63,174,175],{"class":69},"margin:",[63,177,178],{"class":69}," 30",[63,180,99],{"class":72},[63,182,103],{"class":102},[63,184,185,188,191,194,197,199,202],{"class":65,"line":120},[63,186,187],{"class":72},"    @locale ",[63,189,190],{"class":102},"=",[63,192,193],{"class":72}," para ",[63,195,196],{"class":86},"\" \"",[63,198,90],{"class":72},[63,200,201],{"class":69},"hidden:",[63,203,204],{"class":69}," true\n",[63,206,208,211,213,215,217,219,221],{"class":65,"line":207},4,[63,209,210],{"class":72},"    @bids ",[63,212,190],{"class":102},[63,214,193],{"class":72},[63,216,196],{"class":86},[63,218,90],{"class":72},[63,220,201],{"class":69},[63,222,204],{"class":69},[63,224,226,229,231,233,235,237,239],{"class":65,"line":225},5,[63,227,228],{"class":72},"    @destination ",[63,230,190],{"class":102},[63,232,193],{"class":72},[63,234,196],{"class":86},[63,236,90],{"class":72},[63,238,201],{"class":69},[63,240,204],{"class":69},[63,242,244],{"class":65,"line":243},6,[63,245,247],{"emptyLinePlaceholder":246},true,"\n",[63,249,251,254],{"class":65,"line":250},7,[63,252,253],{"class":72},"    para ",[63,255,256],{"class":86},"\"Enter Locale:\"\n",[63,258,260,263,265,268,271],{"class":65,"line":259},8,[63,261,262],{"class":72},"    @input_1 ",[63,264,190],{"class":102},[63,266,267],{"class":72}," edit_line ",[63,269,270],{"class":102},"do",[63,272,273],{"class":72}," |a|\n",[63,275,277,280,283,286,289],{"class":65,"line":276},9,[63,278,279],{"class":72},"      @locale.",[63,281,282],{"class":76},"text",[63,284,285],{"class":102}," =",[63,287,288],{"class":72}," @input_1.",[63,290,291],{"class":76},"text\n",[63,293,295],{"class":65,"line":294},10,[63,296,297],{"class":102},"    end\n",[63,299,301],{"class":65,"line":300},11,[63,302,247],{"emptyLinePlaceholder":246},[63,304,306,309],{"class":65,"line":305},12,[63,307,308],{"class":72},"    flow ",[63,310,103],{"class":102},[63,312,314,317,319],{"class":65,"line":313},13,[63,315,316],{"class":72},"      @multi_locale ",[63,318,190],{"class":102},[63,320,321],{"class":72}," check\n",[63,323,325,328],{"class":65,"line":324},14,[63,326,327],{"class":72},"      para ",[63,329,330],{"class":86},"\"multiple locales\"\n",[63,332,334],{"class":65,"line":333},15,[63,335,297],{"class":102},[63,337,339],{"class":65,"line":338},16,[63,340,247],{"emptyLinePlaceholder":246},[63,342,344,346],{"class":65,"line":343},17,[63,345,253],{"class":72},[63,347,348],{"class":86},"\"Enter BIDs\"\n",[63,350,352,355,357,360,362],{"class":65,"line":351},18,[63,353,354],{"class":72},"    @input_2 ",[63,356,190],{"class":102},[63,358,359],{"class":72}," edit_box ",[63,361,270],{"class":102},[63,363,364],{"class":72}," |b|\n",[63,366,368,371,373,375,378],{"class":65,"line":367},19,[63,369,370],{"class":72},"      @bids.",[63,372,282],{"class":76},[63,374,285],{"class":102},[63,376,377],{"class":72}," @input_2.",[63,379,291],{"class":76},[63,381,383],{"class":65,"line":382},20,[63,384,297],{"class":102},[63,386,388],{"class":65,"line":387},21,[63,389,247],{"emptyLinePlaceholder":246},[63,391,393,395],{"class":65,"line":392},22,[63,394,253],{"class":72},[63,396,397],{"class":86},"\"Choose a destination:\"\n",[63,399,401,404,406,409,412,415,418,421,424,426,429,432,434],{"class":65,"line":400},23,[63,402,403],{"class":72},"    @input_3 ",[63,405,190],{"class":102},[63,407,408],{"class":72}," list_box ",[63,410,411],{"class":69},"items:",[63,413,414],{"class":72}," [",[63,416,417],{"class":86},"\"a value\"",[63,419,420],{"class":72},",",[63,422,423],{"class":86},"\"another value\"",[63,425,73],{"class":72},[63,427,428],{"class":86},"\"one here too\"",[63,430,431],{"class":72},"] ",[63,433,270],{"class":102},[63,435,436],{"class":72}," |c|\n",[63,438,440,444,446,449],{"class":65,"line":439},24,[63,441,443],{"class":442},"s9osk","      where_to",[63,445,285],{"class":102},[63,447,448],{"class":72}," @input_3.",[63,450,291],{"class":76},[63,452,454],{"class":65,"line":453},25,[63,455,297],{"class":102},[63,457,459],{"class":65,"line":458},26,[63,460,247],{"emptyLinePlaceholder":246},[63,462,464,467,469,472,474,477,479,481,484,486],{"class":65,"line":463},27,[63,465,466],{"class":72},"    @button ",[63,468,190],{"class":102},[63,470,471],{"class":76}," button",[63,473,80],{"class":72},[63,475,476],{"class":86},"\"open link\"",[63,478,90],{"class":72},[63,480,175],{"class":69},[63,482,483],{"class":69}," 40",[63,485,99],{"class":72},[63,487,103],{"class":102},[63,489,491],{"class":65,"line":490},28,[63,492,494],{"class":493},"sAwPA","      # something cool\n",[63,496,498],{"class":65,"line":497},29,[63,499,297],{"class":102},[63,501,503],{"class":65,"line":502},30,[63,504,505],{"class":102},"  end\n",[63,507,509],{"class":65,"line":508},31,[63,510,123],{"class":102},[10,512,513,514],{},"Which should give us something like this:\n",[130,515],{"alt":132,"src":516},"\u002Fimages\u002Fposts\u002F2018\u002F06\u002FCapture2.PNG",[10,518,519,520,73],{},"Now we need to just stick in the logic (and straighten that annoying off-center button) and we're all set. The idea behind this program is to take in multiple Big IDs or multiple locales and loop through each of them piecing together a URL. Then what we want to do is to simply open that URL as a new window in the users default browser. Easy enough to do with the variables we created earlier and a ",[19,521,524],{"href":522,"rel":523},"https:\u002F\u002Fwww.skorks.com\u002F2009\u002F08\u002Fhow-a-ruby-case-statement-works-and-what-you-can-do-with-it\u002F",[23],"case statement",[10,526,527],{},"So without further adieu, the final code:",[53,529,531],{"className":55,"code":530,"language":57,"meta":58,"style":58},"Shoes.app(title: \"Publish-a-roo 9000\", width: 280) do\n  stack(margin: 30) do\n    @locale = para \" \", hidden: true\n    @bids = para \" \", hidden: true\n    @destination = para \" \", hidden: true\n\n    para \"Enter Locale:\"\n    @input_1 = edit_line do |a|\n      @locale.text = @input_1.text\n    end\n\n    flow do\n      @multi_locale = check\n      para \"multiple locales\"\n    end\n\n    para \"Enter BIDs\"\n    @input_2 = edit_box do |b|\n      @bids.text = @input_2.text\n    end\n\n    para \"Choose a destination:\"\n    @input_3 = list_box items: [\"product storytelling\", \"pdp storytelling\", \"live site\", \"market data\", \"published products\", \"global settings\",  \"bundle data\", \"assets\", \"pdp history\", \"pdp history\" , \"broadcast tempalte\", \"preview\", \"publishing\", \"notes\" ] do |c|\n      where_to = @input_3.text\n      case where_to\n      when \"pdp storytelling\"\n        @destination.text = \"storytelling\"\n      when \"product storytelling\"\n        @destination.text = \"details\"\n      when \"live site\"\n        @destination.text = \"live\"\n      when \"global settings\"\n        @destination.text = \"global\"\n      when \"market data\"\n        @destination.text = \"market\"\n      when \"bundle data\"\n        @destination.text = \"bundle\"\n      when \"assets\"\n        @destination.text = \"assets\"\n      when \"pdp history\"\n        @destination.text = \"history\"\n      when \"broadcast tempalte\"\n        @destination.text = \"broadcasting\"\n      when \"preview\"\n        @destination.text = \"preview\"\n      when \"publishing\"\n        @destination.text = \"publish\"\n      when \"notes\"\n        @destination.text = \"notes\"\n      when \"published products\"\n        @destination.text = \"published_products\"\n      else\n        @destination.text = \"storytelling\"\n      end\n    end\n\n    @button = button(\"open link\", margin: 40) do\n      if @multi_locale.checked? && @destination.text.to_s != \"live\" && @destination.text.to_s != \"published_products\"\n        locales = @locale.text.split(\" \")\n        locales.each do |locale|\n          bid = @bids.text.to_s\n          destination = @destination.text.to_s\n          #system(\"start https:\u002F\u002Fwww.microsoft.com\u002F#{locale}\u002F#{bid}\u002Fb\u002F#{destination}\")\n          system(\"start https:\u002F\u002Fsftools.trafficmanager.net\u002Fstore\u002F#{locale}\u002Fproducts\u002F#{bid}\u002F#{destination}\")\n        end\n      elsif @destination.text.to_s == \"live\"\n        if @multi_locale.checked?\n          locales = @locale.text.split(\" \")\n          locales.each do |locale|\n            bid = @bids.text.to_s\n            destination = @destination.text.to_s\n            #system(\"start https:\u002F\u002Fwww.microsoft.com\u002F#{locale}\u002F#{bid}\u002Fb\u002F#{destination}\")\n            system(\"start https:\u002F\u002Fwww.microsoft.com\u002F#{locale}\u002Fstore\u002Fd\u002Fpbr_9000\u002F#{bid}\")\n          end\n        else\n          bids = @bids.text.split(\" \")\n          bids.each do |bid|\n            locale = @locale.text.to_s\n            system(\"start https:\u002F\u002Fwww.microsoft.com\u002F#{locale}\u002Fstore\u002Fd\u002Fpbr_9000\u002F#{bid}\")\n          end\n        end\n      elsif @destination.text.to_s == \"published_products\"\n        if @multi_locale.checked?\n          locales = @locale.text.split(\" \")\n          locales.each do |locale|\n            bid = @bids.text.to_s\n            destination = @destination.text.to_s\n            #system(\"start https:\u002F\u002Fwww.microsoft.com\u002F#{locale}\u002F#{bid}\u002Fb\u002F#{destination}\")\n            system(\"start https:\u002F\u002Fsftools.trafficmanager.net\u002Fstore\u002F#{locale}\u002Fpublished-products\u002F#{bid}\u002Fstorytelling\")\n          end\n        else\n          bids = @bids.text.split(\" \")\n          bids.each do |bid|\n            locale = @locale.text.to_s\n            system(\"start https:\u002F\u002Fsftools.trafficmanager.net\u002Fstore\u002F#{locale}\u002Fpublished-products\u002F#{bid}\u002Fstorytelling\")\n          end\n        end\n      else\n        bids = @bids.text.split(\" \")\n        bids.each do |bid|\n          locale = @locale.text.to_s\n          destination = @destination.text.to_s\n          #system(\"start https:\u002F\u002Fwww.microsoft.com\u002F#{locale}\u002F#{bid}\u002Fb\u002F#{destination}\")\n          system(\"start https:\u002F\u002Fsftools.trafficmanager.net\u002Fstore\u002F#{locale}\u002Fproducts\u002F#{bid}\u002F#{destination}\")\n        end\n      end\n    end\n  end\n  para(\n    link(\"click here for help\").click do\n      system(\"start https:\u002F\u002Fgithub.com\u002Fconorbr\u002FPublish-a-roo-9000#publish-a-roo-9000\")\n    end\n  )\nend\n",[60,532,533,557,571,587,603,619,623,629,641,653,657,661,667,675,681,685,689,695,707,719,723,727,733,821,831,839,847,859,866,877,884,895,903,915,923,935,943,955,963,974,982,994,1002,1014,1022,1033,1041,1053,1061,1072,1080,1092,1098,1109,1115,1120,1125,1148,1193,1217,1232,1250,1266,1272,1303,1309,1328,1339,1361,1373,1389,1405,1411,1433,1439,1445,1467,1480,1496,1515,1520,1525,1542,1551,1572,1583,1598,1613,1618,1639,1644,1649,1670,1681,1696,1715,1720,1725,1730,1752,1764,1780,1795,1800,1823,1828,1833,1838,1843,1852,1872,1885,1890,1896],{"__ignoreMap":58},[63,534,535,537,539,541,543,545,547,549,551,553,555],{"class":65,"line":66},[63,536,24],{"class":69},[63,538,73],{"class":72},[63,540,77],{"class":76},[63,542,80],{"class":72},[63,544,83],{"class":69},[63,546,87],{"class":86},[63,548,90],{"class":72},[63,550,93],{"class":69},[63,552,96],{"class":69},[63,554,99],{"class":72},[63,556,103],{"class":102},[63,558,559,561,563,565,567,569],{"class":65,"line":106},[63,560,170],{"class":76},[63,562,80],{"class":72},[63,564,175],{"class":69},[63,566,178],{"class":69},[63,568,99],{"class":72},[63,570,103],{"class":102},[63,572,573,575,577,579,581,583,585],{"class":65,"line":120},[63,574,187],{"class":72},[63,576,190],{"class":102},[63,578,193],{"class":72},[63,580,196],{"class":86},[63,582,90],{"class":72},[63,584,201],{"class":69},[63,586,204],{"class":69},[63,588,589,591,593,595,597,599,601],{"class":65,"line":207},[63,590,210],{"class":72},[63,592,190],{"class":102},[63,594,193],{"class":72},[63,596,196],{"class":86},[63,598,90],{"class":72},[63,600,201],{"class":69},[63,602,204],{"class":69},[63,604,605,607,609,611,613,615,617],{"class":65,"line":225},[63,606,228],{"class":72},[63,608,190],{"class":102},[63,610,193],{"class":72},[63,612,196],{"class":86},[63,614,90],{"class":72},[63,616,201],{"class":69},[63,618,204],{"class":69},[63,620,621],{"class":65,"line":243},[63,622,247],{"emptyLinePlaceholder":246},[63,624,625,627],{"class":65,"line":250},[63,626,253],{"class":72},[63,628,256],{"class":86},[63,630,631,633,635,637,639],{"class":65,"line":259},[63,632,262],{"class":72},[63,634,190],{"class":102},[63,636,267],{"class":72},[63,638,270],{"class":102},[63,640,273],{"class":72},[63,642,643,645,647,649,651],{"class":65,"line":276},[63,644,279],{"class":72},[63,646,282],{"class":76},[63,648,285],{"class":102},[63,650,288],{"class":72},[63,652,291],{"class":76},[63,654,655],{"class":65,"line":294},[63,656,297],{"class":102},[63,658,659],{"class":65,"line":300},[63,660,247],{"emptyLinePlaceholder":246},[63,662,663,665],{"class":65,"line":305},[63,664,308],{"class":72},[63,666,103],{"class":102},[63,668,669,671,673],{"class":65,"line":313},[63,670,316],{"class":72},[63,672,190],{"class":102},[63,674,321],{"class":72},[63,676,677,679],{"class":65,"line":324},[63,678,327],{"class":72},[63,680,330],{"class":86},[63,682,683],{"class":65,"line":333},[63,684,297],{"class":102},[63,686,687],{"class":65,"line":338},[63,688,247],{"emptyLinePlaceholder":246},[63,690,691,693],{"class":65,"line":343},[63,692,253],{"class":72},[63,694,348],{"class":86},[63,696,697,699,701,703,705],{"class":65,"line":351},[63,698,354],{"class":72},[63,700,190],{"class":102},[63,702,359],{"class":72},[63,704,270],{"class":102},[63,706,364],{"class":72},[63,708,709,711,713,715,717],{"class":65,"line":367},[63,710,370],{"class":72},[63,712,282],{"class":76},[63,714,285],{"class":102},[63,716,377],{"class":72},[63,718,291],{"class":76},[63,720,721],{"class":65,"line":382},[63,722,297],{"class":102},[63,724,725],{"class":65,"line":387},[63,726,247],{"emptyLinePlaceholder":246},[63,728,729,731],{"class":65,"line":392},[63,730,253],{"class":72},[63,732,397],{"class":86},[63,734,735,737,739,741,743,745,748,750,753,755,758,760,763,765,768,770,773,776,779,781,784,786,789,791,793,796,799,801,804,806,809,811,814,817,819],{"class":65,"line":400},[63,736,403],{"class":72},[63,738,190],{"class":102},[63,740,408],{"class":72},[63,742,411],{"class":69},[63,744,414],{"class":72},[63,746,747],{"class":86},"\"product storytelling\"",[63,749,90],{"class":72},[63,751,752],{"class":86},"\"pdp storytelling\"",[63,754,90],{"class":72},[63,756,757],{"class":86},"\"live site\"",[63,759,90],{"class":72},[63,761,762],{"class":86},"\"market data\"",[63,764,90],{"class":72},[63,766,767],{"class":86},"\"published products\"",[63,769,90],{"class":72},[63,771,772],{"class":86},"\"global settings\"",[63,774,775],{"class":72},",  ",[63,777,778],{"class":86},"\"bundle data\"",[63,780,90],{"class":72},[63,782,783],{"class":86},"\"assets\"",[63,785,90],{"class":72},[63,787,788],{"class":86},"\"pdp history\"",[63,790,90],{"class":72},[63,792,788],{"class":86},[63,794,795],{"class":72}," , ",[63,797,798],{"class":86},"\"broadcast tempalte\"",[63,800,90],{"class":72},[63,802,803],{"class":86},"\"preview\"",[63,805,90],{"class":72},[63,807,808],{"class":86},"\"publishing\"",[63,810,90],{"class":72},[63,812,813],{"class":86},"\"notes\"",[63,815,816],{"class":72}," ] ",[63,818,270],{"class":102},[63,820,436],{"class":72},[63,822,823,825,827,829],{"class":65,"line":439},[63,824,443],{"class":442},[63,826,285],{"class":102},[63,828,448],{"class":72},[63,830,291],{"class":76},[63,832,833,836],{"class":65,"line":453},[63,834,835],{"class":102},"      case",[63,837,838],{"class":72}," where_to\n",[63,840,841,844],{"class":65,"line":458},[63,842,843],{"class":102},"      when",[63,845,846],{"class":86}," \"pdp storytelling\"\n",[63,848,849,852,854,856],{"class":65,"line":463},[63,850,851],{"class":72},"        @destination.",[63,853,282],{"class":76},[63,855,285],{"class":102},[63,857,858],{"class":86}," \"storytelling\"\n",[63,860,861,863],{"class":65,"line":490},[63,862,843],{"class":102},[63,864,865],{"class":86}," \"product storytelling\"\n",[63,867,868,870,872,874],{"class":65,"line":497},[63,869,851],{"class":72},[63,871,282],{"class":76},[63,873,285],{"class":102},[63,875,876],{"class":86}," \"details\"\n",[63,878,879,881],{"class":65,"line":502},[63,880,843],{"class":102},[63,882,883],{"class":86}," \"live site\"\n",[63,885,886,888,890,892],{"class":65,"line":508},[63,887,851],{"class":72},[63,889,282],{"class":76},[63,891,285],{"class":102},[63,893,894],{"class":86}," \"live\"\n",[63,896,898,900],{"class":65,"line":897},32,[63,899,843],{"class":102},[63,901,902],{"class":86}," \"global settings\"\n",[63,904,906,908,910,912],{"class":65,"line":905},33,[63,907,851],{"class":72},[63,909,282],{"class":76},[63,911,285],{"class":102},[63,913,914],{"class":86}," \"global\"\n",[63,916,918,920],{"class":65,"line":917},34,[63,919,843],{"class":102},[63,921,922],{"class":86}," \"market data\"\n",[63,924,926,928,930,932],{"class":65,"line":925},35,[63,927,851],{"class":72},[63,929,282],{"class":76},[63,931,285],{"class":102},[63,933,934],{"class":86}," \"market\"\n",[63,936,938,940],{"class":65,"line":937},36,[63,939,843],{"class":102},[63,941,942],{"class":86}," \"bundle data\"\n",[63,944,946,948,950,952],{"class":65,"line":945},37,[63,947,851],{"class":72},[63,949,282],{"class":76},[63,951,285],{"class":102},[63,953,954],{"class":86}," \"bundle\"\n",[63,956,958,960],{"class":65,"line":957},38,[63,959,843],{"class":102},[63,961,962],{"class":86}," \"assets\"\n",[63,964,966,968,970,972],{"class":65,"line":965},39,[63,967,851],{"class":72},[63,969,282],{"class":76},[63,971,285],{"class":102},[63,973,962],{"class":86},[63,975,977,979],{"class":65,"line":976},40,[63,978,843],{"class":102},[63,980,981],{"class":86}," \"pdp history\"\n",[63,983,985,987,989,991],{"class":65,"line":984},41,[63,986,851],{"class":72},[63,988,282],{"class":76},[63,990,285],{"class":102},[63,992,993],{"class":86}," \"history\"\n",[63,995,997,999],{"class":65,"line":996},42,[63,998,843],{"class":102},[63,1000,1001],{"class":86}," \"broadcast tempalte\"\n",[63,1003,1005,1007,1009,1011],{"class":65,"line":1004},43,[63,1006,851],{"class":72},[63,1008,282],{"class":76},[63,1010,285],{"class":102},[63,1012,1013],{"class":86}," \"broadcasting\"\n",[63,1015,1017,1019],{"class":65,"line":1016},44,[63,1018,843],{"class":102},[63,1020,1021],{"class":86}," \"preview\"\n",[63,1023,1025,1027,1029,1031],{"class":65,"line":1024},45,[63,1026,851],{"class":72},[63,1028,282],{"class":76},[63,1030,285],{"class":102},[63,1032,1021],{"class":86},[63,1034,1036,1038],{"class":65,"line":1035},46,[63,1037,843],{"class":102},[63,1039,1040],{"class":86}," \"publishing\"\n",[63,1042,1044,1046,1048,1050],{"class":65,"line":1043},47,[63,1045,851],{"class":72},[63,1047,282],{"class":76},[63,1049,285],{"class":102},[63,1051,1052],{"class":86}," \"publish\"\n",[63,1054,1056,1058],{"class":65,"line":1055},48,[63,1057,843],{"class":102},[63,1059,1060],{"class":86}," \"notes\"\n",[63,1062,1064,1066,1068,1070],{"class":65,"line":1063},49,[63,1065,851],{"class":72},[63,1067,282],{"class":76},[63,1069,285],{"class":102},[63,1071,1060],{"class":86},[63,1073,1075,1077],{"class":65,"line":1074},50,[63,1076,843],{"class":102},[63,1078,1079],{"class":86}," \"published products\"\n",[63,1081,1083,1085,1087,1089],{"class":65,"line":1082},51,[63,1084,851],{"class":72},[63,1086,282],{"class":76},[63,1088,285],{"class":102},[63,1090,1091],{"class":86}," \"published_products\"\n",[63,1093,1095],{"class":65,"line":1094},52,[63,1096,1097],{"class":102},"      else\n",[63,1099,1101,1103,1105,1107],{"class":65,"line":1100},53,[63,1102,851],{"class":72},[63,1104,282],{"class":76},[63,1106,285],{"class":102},[63,1108,858],{"class":86},[63,1110,1112],{"class":65,"line":1111},54,[63,1113,1114],{"class":102},"      end\n",[63,1116,1118],{"class":65,"line":1117},55,[63,1119,297],{"class":102},[63,1121,1123],{"class":65,"line":1122},56,[63,1124,247],{"emptyLinePlaceholder":246},[63,1126,1128,1130,1132,1134,1136,1138,1140,1142,1144,1146],{"class":65,"line":1127},57,[63,1129,466],{"class":72},[63,1131,190],{"class":102},[63,1133,471],{"class":76},[63,1135,80],{"class":72},[63,1137,476],{"class":86},[63,1139,90],{"class":72},[63,1141,175],{"class":69},[63,1143,483],{"class":69},[63,1145,99],{"class":72},[63,1147,103],{"class":102},[63,1149,1151,1154,1157,1160,1163,1166,1168,1170,1173,1176,1179,1181,1183,1185,1187,1189,1191],{"class":65,"line":1150},58,[63,1152,1153],{"class":102},"      if",[63,1155,1156],{"class":72}," @multi_locale.",[63,1158,1159],{"class":76},"checked?",[63,1161,1162],{"class":102}," &&",[63,1164,1165],{"class":72}," @destination.",[63,1167,282],{"class":76},[63,1169,73],{"class":72},[63,1171,1172],{"class":76},"to_s",[63,1174,1175],{"class":102}," !=",[63,1177,1178],{"class":86}," \"live\"",[63,1180,1162],{"class":102},[63,1182,1165],{"class":72},[63,1184,282],{"class":76},[63,1186,73],{"class":72},[63,1188,1172],{"class":76},[63,1190,1175],{"class":102},[63,1192,1091],{"class":86},[63,1194,1196,1199,1201,1204,1206,1208,1211,1213,1215],{"class":65,"line":1195},59,[63,1197,1198],{"class":442},"        locales",[63,1200,285],{"class":102},[63,1202,1203],{"class":72}," @locale.",[63,1205,282],{"class":76},[63,1207,73],{"class":72},[63,1209,1210],{"class":76},"split",[63,1212,80],{"class":72},[63,1214,196],{"class":86},[63,1216,117],{"class":72},[63,1218,1220,1223,1226,1229],{"class":65,"line":1219},60,[63,1221,1222],{"class":72},"        locales.",[63,1224,1225],{"class":76},"each",[63,1227,1228],{"class":102}," do",[63,1230,1231],{"class":72}," |locale|\n",[63,1233,1235,1238,1240,1243,1245,1247],{"class":65,"line":1234},61,[63,1236,1237],{"class":442},"          bid",[63,1239,285],{"class":102},[63,1241,1242],{"class":72}," @bids.",[63,1244,282],{"class":76},[63,1246,73],{"class":72},[63,1248,1249],{"class":76},"to_s\n",[63,1251,1253,1256,1258,1260,1262,1264],{"class":65,"line":1252},62,[63,1254,1255],{"class":442},"          destination",[63,1257,285],{"class":102},[63,1259,1165],{"class":72},[63,1261,282],{"class":76},[63,1263,73],{"class":72},[63,1265,1249],{"class":76},[63,1267,1269],{"class":65,"line":1268},63,[63,1270,1271],{"class":493},"          #system(\"start https:\u002F\u002Fwww.microsoft.com\u002F#{locale}\u002F#{bid}\u002Fb\u002F#{destination}\")\n",[63,1273,1275,1278,1280,1283,1286,1289,1292,1295,1298,1301],{"class":65,"line":1274},64,[63,1276,1277],{"class":69},"          system",[63,1279,80],{"class":72},[63,1281,1282],{"class":86},"\"start https:\u002F\u002Fsftools.trafficmanager.net\u002Fstore\u002F",[63,1284,1285],{"class":86},"#{locale}",[63,1287,1288],{"class":86},"\u002Fproducts\u002F",[63,1290,1291],{"class":86},"#{bid}",[63,1293,1294],{"class":86},"\u002F",[63,1296,1297],{"class":86},"#{destination}",[63,1299,1300],{"class":86},"\"",[63,1302,117],{"class":72},[63,1304,1306],{"class":65,"line":1305},65,[63,1307,1308],{"class":102},"        end\n",[63,1310,1312,1315,1317,1319,1321,1323,1326],{"class":65,"line":1311},66,[63,1313,1314],{"class":102},"      elsif",[63,1316,1165],{"class":72},[63,1318,282],{"class":76},[63,1320,73],{"class":72},[63,1322,1172],{"class":76},[63,1324,1325],{"class":102}," ==",[63,1327,894],{"class":86},[63,1329,1331,1334,1336],{"class":65,"line":1330},67,[63,1332,1333],{"class":102},"        if",[63,1335,1156],{"class":72},[63,1337,1338],{"class":76},"checked?\n",[63,1340,1342,1345,1347,1349,1351,1353,1355,1357,1359],{"class":65,"line":1341},68,[63,1343,1344],{"class":442},"          locales",[63,1346,285],{"class":102},[63,1348,1203],{"class":72},[63,1350,282],{"class":76},[63,1352,73],{"class":72},[63,1354,1210],{"class":76},[63,1356,80],{"class":72},[63,1358,196],{"class":86},[63,1360,117],{"class":72},[63,1362,1364,1367,1369,1371],{"class":65,"line":1363},69,[63,1365,1366],{"class":72},"          locales.",[63,1368,1225],{"class":76},[63,1370,1228],{"class":102},[63,1372,1231],{"class":72},[63,1374,1376,1379,1381,1383,1385,1387],{"class":65,"line":1375},70,[63,1377,1378],{"class":442},"            bid",[63,1380,285],{"class":102},[63,1382,1242],{"class":72},[63,1384,282],{"class":76},[63,1386,73],{"class":72},[63,1388,1249],{"class":76},[63,1390,1392,1395,1397,1399,1401,1403],{"class":65,"line":1391},71,[63,1393,1394],{"class":442},"            destination",[63,1396,285],{"class":102},[63,1398,1165],{"class":72},[63,1400,282],{"class":76},[63,1402,73],{"class":72},[63,1404,1249],{"class":76},[63,1406,1408],{"class":65,"line":1407},72,[63,1409,1410],{"class":493},"            #system(\"start https:\u002F\u002Fwww.microsoft.com\u002F#{locale}\u002F#{bid}\u002Fb\u002F#{destination}\")\n",[63,1412,1414,1417,1419,1422,1424,1427,1429,1431],{"class":65,"line":1413},73,[63,1415,1416],{"class":69},"            system",[63,1418,80],{"class":72},[63,1420,1421],{"class":86},"\"start https:\u002F\u002Fwww.microsoft.com\u002F",[63,1423,1285],{"class":86},[63,1425,1426],{"class":86},"\u002Fstore\u002Fd\u002Fpbr_9000\u002F",[63,1428,1291],{"class":86},[63,1430,1300],{"class":86},[63,1432,117],{"class":72},[63,1434,1436],{"class":65,"line":1435},74,[63,1437,1438],{"class":102},"          end\n",[63,1440,1442],{"class":65,"line":1441},75,[63,1443,1444],{"class":102},"        else\n",[63,1446,1448,1451,1453,1455,1457,1459,1461,1463,1465],{"class":65,"line":1447},76,[63,1449,1450],{"class":442},"          bids",[63,1452,285],{"class":102},[63,1454,1242],{"class":72},[63,1456,282],{"class":76},[63,1458,73],{"class":72},[63,1460,1210],{"class":76},[63,1462,80],{"class":72},[63,1464,196],{"class":86},[63,1466,117],{"class":72},[63,1468,1470,1473,1475,1477],{"class":65,"line":1469},77,[63,1471,1472],{"class":72},"          bids.",[63,1474,1225],{"class":76},[63,1476,1228],{"class":102},[63,1478,1479],{"class":72}," |bid|\n",[63,1481,1483,1486,1488,1490,1492,1494],{"class":65,"line":1482},78,[63,1484,1485],{"class":442},"            locale",[63,1487,285],{"class":102},[63,1489,1203],{"class":72},[63,1491,282],{"class":76},[63,1493,73],{"class":72},[63,1495,1249],{"class":76},[63,1497,1499,1501,1503,1505,1507,1509,1511,1513],{"class":65,"line":1498},79,[63,1500,1416],{"class":69},[63,1502,80],{"class":72},[63,1504,1421],{"class":86},[63,1506,1285],{"class":86},[63,1508,1426],{"class":86},[63,1510,1291],{"class":86},[63,1512,1300],{"class":86},[63,1514,117],{"class":72},[63,1516,1518],{"class":65,"line":1517},80,[63,1519,1438],{"class":102},[63,1521,1523],{"class":65,"line":1522},81,[63,1524,1308],{"class":102},[63,1526,1528,1530,1532,1534,1536,1538,1540],{"class":65,"line":1527},82,[63,1529,1314],{"class":102},[63,1531,1165],{"class":72},[63,1533,282],{"class":76},[63,1535,73],{"class":72},[63,1537,1172],{"class":76},[63,1539,1325],{"class":102},[63,1541,1091],{"class":86},[63,1543,1545,1547,1549],{"class":65,"line":1544},83,[63,1546,1333],{"class":102},[63,1548,1156],{"class":72},[63,1550,1338],{"class":76},[63,1552,1554,1556,1558,1560,1562,1564,1566,1568,1570],{"class":65,"line":1553},84,[63,1555,1344],{"class":442},[63,1557,285],{"class":102},[63,1559,1203],{"class":72},[63,1561,282],{"class":76},[63,1563,73],{"class":72},[63,1565,1210],{"class":76},[63,1567,80],{"class":72},[63,1569,196],{"class":86},[63,1571,117],{"class":72},[63,1573,1575,1577,1579,1581],{"class":65,"line":1574},85,[63,1576,1366],{"class":72},[63,1578,1225],{"class":76},[63,1580,1228],{"class":102},[63,1582,1231],{"class":72},[63,1584,1586,1588,1590,1592,1594,1596],{"class":65,"line":1585},86,[63,1587,1378],{"class":442},[63,1589,285],{"class":102},[63,1591,1242],{"class":72},[63,1593,282],{"class":76},[63,1595,73],{"class":72},[63,1597,1249],{"class":76},[63,1599,1601,1603,1605,1607,1609,1611],{"class":65,"line":1600},87,[63,1602,1394],{"class":442},[63,1604,285],{"class":102},[63,1606,1165],{"class":72},[63,1608,282],{"class":76},[63,1610,73],{"class":72},[63,1612,1249],{"class":76},[63,1614,1616],{"class":65,"line":1615},88,[63,1617,1410],{"class":493},[63,1619,1621,1623,1625,1627,1629,1632,1634,1637],{"class":65,"line":1620},89,[63,1622,1416],{"class":69},[63,1624,80],{"class":72},[63,1626,1282],{"class":86},[63,1628,1285],{"class":86},[63,1630,1631],{"class":86},"\u002Fpublished-products\u002F",[63,1633,1291],{"class":86},[63,1635,1636],{"class":86},"\u002Fstorytelling\"",[63,1638,117],{"class":72},[63,1640,1642],{"class":65,"line":1641},90,[63,1643,1438],{"class":102},[63,1645,1647],{"class":65,"line":1646},91,[63,1648,1444],{"class":102},[63,1650,1652,1654,1656,1658,1660,1662,1664,1666,1668],{"class":65,"line":1651},92,[63,1653,1450],{"class":442},[63,1655,285],{"class":102},[63,1657,1242],{"class":72},[63,1659,282],{"class":76},[63,1661,73],{"class":72},[63,1663,1210],{"class":76},[63,1665,80],{"class":72},[63,1667,196],{"class":86},[63,1669,117],{"class":72},[63,1671,1673,1675,1677,1679],{"class":65,"line":1672},93,[63,1674,1472],{"class":72},[63,1676,1225],{"class":76},[63,1678,1228],{"class":102},[63,1680,1479],{"class":72},[63,1682,1684,1686,1688,1690,1692,1694],{"class":65,"line":1683},94,[63,1685,1485],{"class":442},[63,1687,285],{"class":102},[63,1689,1203],{"class":72},[63,1691,282],{"class":76},[63,1693,73],{"class":72},[63,1695,1249],{"class":76},[63,1697,1699,1701,1703,1705,1707,1709,1711,1713],{"class":65,"line":1698},95,[63,1700,1416],{"class":69},[63,1702,80],{"class":72},[63,1704,1282],{"class":86},[63,1706,1285],{"class":86},[63,1708,1631],{"class":86},[63,1710,1291],{"class":86},[63,1712,1636],{"class":86},[63,1714,117],{"class":72},[63,1716,1718],{"class":65,"line":1717},96,[63,1719,1438],{"class":102},[63,1721,1723],{"class":65,"line":1722},97,[63,1724,1308],{"class":102},[63,1726,1728],{"class":65,"line":1727},98,[63,1729,1097],{"class":102},[63,1731,1733,1736,1738,1740,1742,1744,1746,1748,1750],{"class":65,"line":1732},99,[63,1734,1735],{"class":442},"        bids",[63,1737,285],{"class":102},[63,1739,1242],{"class":72},[63,1741,282],{"class":76},[63,1743,73],{"class":72},[63,1745,1210],{"class":76},[63,1747,80],{"class":72},[63,1749,196],{"class":86},[63,1751,117],{"class":72},[63,1753,1755,1758,1760,1762],{"class":65,"line":1754},100,[63,1756,1757],{"class":72},"        bids.",[63,1759,1225],{"class":76},[63,1761,1228],{"class":102},[63,1763,1479],{"class":72},[63,1765,1767,1770,1772,1774,1776,1778],{"class":65,"line":1766},101,[63,1768,1769],{"class":442},"          locale",[63,1771,285],{"class":102},[63,1773,1203],{"class":72},[63,1775,282],{"class":76},[63,1777,73],{"class":72},[63,1779,1249],{"class":76},[63,1781,1783,1785,1787,1789,1791,1793],{"class":65,"line":1782},102,[63,1784,1255],{"class":442},[63,1786,285],{"class":102},[63,1788,1165],{"class":72},[63,1790,282],{"class":76},[63,1792,73],{"class":72},[63,1794,1249],{"class":76},[63,1796,1798],{"class":65,"line":1797},103,[63,1799,1271],{"class":493},[63,1801,1803,1805,1807,1809,1811,1813,1815,1817,1819,1821],{"class":65,"line":1802},104,[63,1804,1277],{"class":69},[63,1806,80],{"class":72},[63,1808,1282],{"class":86},[63,1810,1285],{"class":86},[63,1812,1288],{"class":86},[63,1814,1291],{"class":86},[63,1816,1294],{"class":86},[63,1818,1297],{"class":86},[63,1820,1300],{"class":86},[63,1822,117],{"class":72},[63,1824,1826],{"class":65,"line":1825},105,[63,1827,1308],{"class":102},[63,1829,1831],{"class":65,"line":1830},106,[63,1832,1114],{"class":102},[63,1834,1836],{"class":65,"line":1835},107,[63,1837,297],{"class":102},[63,1839,1841],{"class":65,"line":1840},108,[63,1842,505],{"class":102},[63,1844,1846,1849],{"class":65,"line":1845},109,[63,1847,1848],{"class":76},"  para",[63,1850,1851],{"class":72},"(\n",[63,1853,1855,1858,1860,1863,1866,1869],{"class":65,"line":1854},110,[63,1856,1857],{"class":76},"    link",[63,1859,80],{"class":72},[63,1861,1862],{"class":86},"\"click here for help\"",[63,1864,1865],{"class":72},").",[63,1867,1868],{"class":76},"click",[63,1870,1871],{"class":102}," do\n",[63,1873,1875,1878,1880,1883],{"class":65,"line":1874},111,[63,1876,1877],{"class":69},"      system",[63,1879,80],{"class":72},[63,1881,1882],{"class":86},"\"start https:\u002F\u002Fgithub.com\u002Fconorbr\u002FPublish-a-roo-9000#publish-a-roo-9000\"",[63,1884,117],{"class":72},[63,1886,1888],{"class":65,"line":1887},112,[63,1889,297],{"class":102},[63,1891,1893],{"class":65,"line":1892},113,[63,1894,1895],{"class":72},"  )\n",[63,1897,1899],{"class":65,"line":1898},114,[63,1900,123],{"class":102},[10,1902,1903],{},"And that's it, with this certain tasks that required and hour to do now could be completed in under 20 minutes. It's certainly not the most elegant piece of code you'll ever see but for the purposes of the work we were doing it worked just fine for myself and my team.",[10,1905,1906,1907],{},"A gif of it working:\n",[130,1908],{"alt":132,"src":1909},"https:\u002F\u002Fs3-eu-west-1.amazonaws.com\u002Fbreenblogbucket\u002F2018\u002F06\u002F2018-06-18_21-02-00.gif",[1911,1912,1913],"style",{},"html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":58,"searchDepth":106,"depth":106,"links":1915},[],"2018-06-18 20:45","md",{},"\u002F2018\u002F06\u002F18\u002Fruby-desktop-application-publish-a-roo-9000",{"title":5,"description":12},"2018\u002F06\u002F18\u002Fruby-desktop-application-publish-a-roo-9000","A ruby desktop application, why not?","_0HiacF7l_oqjw1OXbhjE0pg9Af6CG8l_Ausk9t8JPA",1791634646177]