2011-01-17 14 views
6

Chcę utworzyć aplikację w Railsach z systemem wtyczek. Potencjalny użytkownik powinien móc przesłać (lub lepiej zainstalować z repozytorium) wtyczkę i zainstalować ją, aby moja aplikacja mogła zrobić coś więcej. Należy to zrobić BEZ FTP/SSH/jakiegokolwiek niskiego poziomu dostępu do serwera.Szyny 3: Tworzenie aplikacji z wewnętrznym systemem wtyczek

Czy są więc jakieś dobre klejnoty lub samouczki, jak to zrobić w Rails 3?

+0

możliwy duplikat [Budowanie struktury rozszerzeń dla aplikacji Rails] (http://stackoverflow.com/questions/2570072/building-an-extension-framework-for-a-rails-app) – lulalala

Odpowiedz

0

Czy obejrzałeś http://edgeguides.rubyonrails.org/plugins.html?

Wygląda na to, że nie jest w 100% zgodny z Railsami 3, ale może Ci pomóc. Większość artykułów z wtyczkami, które widziałem, obejmuje Rails 2.

+0

To nie jest dokładnie co mam na myśli, ponieważ działa na stosie RoR, a nie mojej aplikacji. Ale to dla mnie alternatywa. – Migol

0

Właściwie to niedawno pomyślałem o solidnej koncepcji tego. Chcesz spojrzeć na $SAFE, mechanizmy skanujące rubys i dowiedzieć się wszystkiego o implikacjach bezpieczeństwa eval() ing ruby ​​code, jeśli planujesz pozwolić użytkownikowi pisać swoje wtyczki w ruby.

Jeśli ufasz, że Twoi użytkownicy są na tyle pewni, że pozwolą im to zrobić, to znaczy.

Istnieje również wiele zasobów (klejnoty, artykuły, do googlowania) na sandboxing in Ruby - powinieneś sam ocenić, jak wykonalne i/lub bezpieczne są.

Jeśli nie ufasz w ogóle użytkownikowi, powinieneś zajrzeć do writing your own DSL in ruby lub zaimplementować inne sposoby wyrażania funkcjonalności bez bezpośredniego wykonywania kodu użytkownika.

Robienie czegoś takiego właściwie nie jest łatwym zadaniem.

+0

Myślałem raczej o systemie podobnym do Wordpress, gdy użytkownik instaluje moje oprogramowanie na własnym serwerze, może przesłać wszystko, co chce, ale kiedy na moim serwerze może wybrać wtyczki, które zostały wcześniej załadowane i zatwierdzone. – Migol

+3

Następnie możesz zajrzeć do wtyczek Railsowych, jak sugerowano poniżej. Po prostu pozwól użytkownikowi napisać wtyczkę Rails, która może wykorzystać funkcjonalność odsłoniętą przez twoją aplikację, aby się do niej podłączyć. [Redmine] (http://redmine.org) robi to w ten sposób, zobacz ich [Redmine Plugins Page] (http://www.redmine.org/projects/redmine/wiki/Plugins). –