Hej,
Mam pewien problem z IMGKit’em. Niedawno zacząłem moją przygodę z Rails’ami i nie wiem czy problem wynika z mojej niewiedzy czy wina leży gdzieś indziej.
Powinno to działać tak, że podczas tworzenia objektu tworzony jest screenshot podanej strony, a następnie wrzucany na serwer. Poniżej jest część controllera, niestety w ten sposób coś nie do końca działa. Minitaruka jest tworzona i wrzucana na serwer, sęk tylko w tym, że wygląda tak: http://i59.tinypic.com/mrycuf.jpg
Jeżeli robię to wszystko manualnie, z poziomu konsoli wszystko wraca do normy i screen wygląda tak(http://i59.tinypic.com/bi0w1g.jpg). Problem znika też jeżeli najpierw zapisze obiekt a dopiero później wykonam metode create_website_thumbnail. Rzecz w tym, że chciałbym się najpierw upewnić, że Paperclip zwaliduje istnienie tej miniaturki, a dopiero potem zapisze obiekt. Jeżeli gdzieś robię błąd dajcie mi znać i poprawcie, może jest na to jakieś inne rozwiązanie.
Pozdrawiam,
Paweł
def create
@startup = Startup.new(startup_params)
create_website_thumbnail(@startup)
if @startup.save
flash[:success] = 'Please wait until administrator accept your request.'
redirect_to @startup
else
@startup.destroy
flash.now[:error] = @startup.errors.full_messages
render action: :new
end
end
private
def set_startup
@startup = Startup.all.find(params[:id])
end
def startup_params
params.require(:startup).permit(:name, :description, :short_description, :website_url)
end
def create_website_thumbnail(startup)
kit = IMGKit.new(startup.website_url.to_s)
img = kit.to_img(:jpg)
file = Tempfile.new(["thumbnail_#{startup.name}", 'jpg'], 'tmp', :encoding => 'ascii-8bit')
file.write(img)
file.flush
startup.website_thumbnail = file
file.unlink
rescue
false
end
end