Это то, что вы хотите?
import itertools as it
def func(s):
for i in range(len(s)+1):
for combo in it.combinations(s,i):
yield "".join(combo)
print list(func("abc"))
У меня нет большого опыта в этом, таким образом, я не знаю, могу ли я дать Вам Лучший способ, но если Capistrano не работает, и у Вас не может быть отдельной установки МРТ только для выполнения его, Вы имеете всего несколько альтернатив в запасе:
Попробуйте рабочие простые Грабли и запишите Вашу собственную цель развертывания: http://www.gra2.com/article.php/deploy-ruby-on-rails-applications-rake
Или используйте Муравья или Знатока.
Или если это всего ОДИН сервер, к которому необходимо развернуться, Вы могли бы просто взломать вместе два сценария Ruby - тот, который слушает на сервере для запросов завершения работы/запуска и одном локальном, к которому Вы работаете: Отправьте завершение работы, scp по файлу, отправьте запуск.
Между прочим, Вы отправили какие-либо ошибки интеграции, которые Вы находите с Capistrano команде JRuby? Я уверен, что они были бы рады иметь любой вклад.:)
Я выполняю проект направляющих, использующий JRuby и развертывающийся к серверу Tomcat. Я принял решение развернуться с Capistrano, потому что он автоматизирует примерно все. Я должен был сделать несколько незначительных модификаций к жизненному циклу развертывания Capistrano, чтобы заставить это работать на Tomcat:
Шаг 1: Я создал задачу трели, которая будет выполнена на сервере после того, как Capistrano обновляет код:
desc "Run the warble command to deploy the site"
namespace(:deploy) do
task :warble do
run ". ~/.profile;cd #{release_path};warble"
end
end
И сцепленный это в жизненный цикл Capistrano с помощью:
after 'deploy:update_code', 'deploy:warble'
Мой сервер Tomcat имеет символьную ссылку, указывающую #{release_path}/tmp/war
каталог создается трелью. Если Вам не нравится это, можно легко изменить задачу трели переместить военный файл в каталог Tomcat вместо этого.
Шаг 2: Я переопределил deploy:start
и deploy:stop
задачи так, чтобы они начали сервер Tomcat вместо сервера Полукровки:
desc "Starts the Tomcat Server"
namespace(:deploy) do
task :start do
sudo "#{tomcat_home}/bin/startup.sh"
end
end
desc "Shutdown the Tomcat Server"
namespace(:deploy) do
task :stop do
sudo "#{tomcat_home}/bin/shutdown.sh"
end
end
Я выполняю задачи Capistrano с помощью МРТ, а не интерпретатора JRuby.
Я, вероятно, использовал бы Муравья для этого. В конце концов, это - просто другой ВОЕННЫЙ файл, правильно? Я не знаю, какую версию Tomcat Вы используете, но версия 4.1x идет с задачей Ant для развертывания на Tomcat.
Могло бы стоить посмотреть 'на Vlad устройство развертывания', оно добавляет remote_task для Обстрела разрешения Вам выполнить задачи на удаленном сервере. Лично однако я предпочитаю иметь стандартную задачу Граблей на сервере, ssh в и выполнять ту задачу - который затем сделал бы svn контроль, сделать ВОЕННЫЙ файл, безотносительно...