Ścieżka do pliku w pluginie

Witam!

Pisze sobie własnego plugina i natrafiłem na problem, którego nie potrafię rozwiązać w sensowny sposób. Potrzebuje w widoku wyświetlić sobie obrazek korzystając np z image_tag. Problem w tym, że chciał bym aby ten obrazek znajdował się w katalogu z pluginem, nie w głównym katalogu aplikacji. Nie bardzo podoba mi się też pomysł z automatycznym kopiowaniem pliku do publika przez jakiegoś raka. Czy możecie mi podpowiedzieć w jaki sposób w owym widoku plugina mogę się odwołać do ścieżki wskazującej na katalog tegoż plugina?

PS. Podobny problem mam z plikami css oraz javascript znajdującymi się w katalogu plugina, a nie w publicu aplikacji.

Z góry wielkie dzięki za pomoc,
Wojtek.

Nie mozesz po prostu zrobic w public katalog o takiej samej nazwie jak plugin i tam przekopiowac te rzeczy?

Ten problem nie ma łatwego rozwiązania. Możesz żyć z serwowaniem statycznych plików podczas developmentu przez Rack::Static, a na produkcji kopiować assety do public/ przy pomocy jakiegoś rake taska. Dzięki Piotrowi Sarnackiemu niedługo będzie to troszkę prostsze, ale zasada będzie ta sama.

Przykładowa konfiguracja enginu do serwowania assetów przy pomocy Rack::Static:
http://github.com/mieczyk/ichiban/raw/master/lib/ichiban/engine.rb

Właśnie tego chciał bym uniknąć :slight_smile: Chciał bym, żeby instalacja plugina ograniczyła się w przyszłości do wrzucenia go do vendorsów i tyle. Bez zbędnego kombinowania z katalogami (jeżeli to w ogóle możliwe) :wink:

vendors/plugin nie są obecnie zalecanym miejscem do przechowywania pluginów, nawet była ostatnio dyskusja o tym czy nie usunąć tego katalogu. Chyba jednak zostaje na razie, ale preferowana metoda dystrybucji pluginów to gemy. Katalog vendor/plugins ma w założeniu mieć kod którym się nie dzielisz z innymi ludźmi, gdzie wyrzucasz rzeczy z głównej aplikacji aby ją bardziej uporządkować.

Dzięki za sugestie Hubert :slight_smile: Chyba będę musiał się zdecydować jednak na kopiowanie tych plików jakimś rake taskiem rzeczywiście. Trochę to psuje moją wizję no ale co zrobić :stuck_out_tongue:

Railsy 2 czy 3? :slight_smile:

Co do vendors/plugin, to rzeczywiście najlepiej od niego odchodzić, ale z tego co ostatnio się dowiedziałem pluginy tam trzymane raczej nie wylecą. O ile używanie “obcych” pluginów w ten sposób nie jest wskazane (wersjonowanie, dystrybucja itp), to jednak jak trzeba szybko coś wypakować z aplikacji do pluginu, to jest to lżejsze wyjście niż gemy.

Nie wiem czy to nie ja rozpuściłem plotkę, że vendor/plugins wypadnie, jeżeli tak, to sorry za zamieszanie.

Kopiowanie jest słabe no ale jak mówią mądrzy ludzie nie ma łatwo. Może miękki link łatwiej przejdzie ?