2011-01-13 14 views
32

Próbowałem zapisać obraz lokalny w konsoli szyn.Spinacz do papieru: Jak przechowywać obraz w konsoli Rails?

Ponieważ mam wiele zdjęć w mojej lokalnej pamięci (używam przeszukiwacza, aby pobrać mnóstwo zdjęć), chcę zapisać je w bazie danych, z korzyścią dla spinacza, aby wykonać zadanie graficzne, np. Miniaturę itp. Jeśli Używam strony internetowej, aby zapisywać nowe obrazy w bazie danych jeden po drugim, będzie to kosztować dużo czasu. Więc chcę znaleźć sposób na konsoli rails (jakiś kod), który może wsadowo zapisać obraz w bazę danych.

+0

Polecam biorąc więcej czasu z pytaniem, w tym, co już sprawdzone i dlaczego chcesz używać „konsoli” do przechowywania lokalnego obrazu ... dostaniesz większą szansę post poświęcając więcej czasu samemu. –

Odpowiedz

3

Nie wiem, czy to jest to, czego chcesz ... ale , aby zapisać zasób spinacza z konsoli Możesz łatwo użyć instancji pliku. a.e.

Image.new :data=>File.new("/path/to/image.jpg","r") 
+0

rubin-1.9.2-P0> Image.new NameError: stała zainicjalizowana obrazu \t z (IRB): 2 \t z /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/gems/railties -3.0.1/lib/rails/commands/console.rb: 44: in 'start' \t from /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/ lib/rails/commands/console.rb: 8: in 'start' \t from /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands .rb: 23: w ' ' \t od skrypt/szyn: 6: w' wymagają' \t od skrypt/szyn: 6: '

' – mlzboy

+0

próbowałem użytkowania Image.new w konsoli szyn ale powoduje błędy jak wyżej – mlzboy

+1

Czy zdefiniowano model obrazu? – andrea

16

Jeśli jest to model:

class User < ActiveRecord::Base 
    has_attached_file :avatar 
end 

następnie dodaje powinien pracować z konsoli:

>> User.create(:avatar => File.open('/path/to/image.jpg', 'rb')) 
+0

Dla tych, którzy są ciekawi, '' rb'' i ''r'' w parametrze' File.open' są wymienialne, jak na: http://stackoverflow.com/a/7085623/293280 –

50

celu dalszego wyjaśnienia @ Andrei odpowiedź:

YourPaperclippedModelHere.new(:your_paperclip_field => File.new(path, "r"))

Więc jeśli twój model nosi nazwę obrazu i swojej dziedzinie spinacza to dane:

Image.new(:data => File.new(path_to_your_file, "r"))

0

Późne odpowiedzi, ale mam nadzieję, że to będzie działać dla innych. Musisz uwzględnić.

File.new("#{Rails.root}/public/images/default_avatar.png", "r")

Powiązane problemy