Ruby 1.9.1 og bytekode-magiJeg gleder meg til Ruby 1.9.1 er ferdig og jeg kan gjøre ting som dette: code = RubyVM::InstructionSequence.compile("2+2").to_a HTTPClient.new.post("http://example.com/run_code", code.to_json) og deretter i den andre enden, i f.eks. Rails: def run_code code = RubyVM::InstructionSequence.load( JSON.load(params[:code])) code.eval end Denne koden fungerer i dag om du patcher Bytekode-funksjonaliteten er helt nødvendig for å legge Ruby-støtte til map-reduce-rammeverket Disco. Disco lar deg uttrykke map-reduce-oppgaver i ren Python, ved at selve bytekoden til oppgavene disassembles og sendes til en Erlang-demon som deretter utfører koden på mange maskiner. Her er et eksempel med Python som lager en tabell over ord-frekvenser fra en inputfil: import disco def fun_map(e, params): return [(w, 1) for w in re.sub("\W", " ", e).lower().split()] def fun_reduce(iter, out, params): s = {} for k, v in iter: if k in s: s[k] += int(v) else: s[k] = int(v) for k, v in s.iteritems(): out.add(k, v) results = disco.job("disco://localhost:5000", "wordcount", ["http://localhost/text-block-1", "http://localhost/text-block-2"], fun_map, reduce = fun_reduce, nr_maps = 100, sort = False) for key, value in disco.result_iterator(results): print key, value Med Ruby 1.9 vil vi kunne gjøre det samme. Denne bytekodefunksjonaliteten burde også åpne for å enklere kunne uttrykke map-reduce-jobber med CouchDB, for eksempel. Den vil også potensielt kunne brukes til å lage penere asynkron-jobb-kø-prosessering á la Starling. Jeg kan tenke meg noe slikt: JobQueue.run_later do require "#{RAILS_ROOT}/config/environment" ComplexProcessing.execute end Her kan Ruby 1.9 og Rails?Er det noen her som kjører Ruby 1.9 og Rails på produksjonsservere og har noen erfaringer å dele? Jeg mener å ha hørt at Rails nå kjører fint på 1.9, men jeg finner ingen oppdaterte artikler som bekrefter dette, og jeg vil gjerne få et bedre inntrykk av hvorvidt det overhodet er noen vits i å prøve. Migrating to Ruby 1.9
| |||||||||||