Executando Rails 3.2.x no IIS 7.5, usando SQL Server e mantendo o Asset Pipeline.

Recentemente, tive que executar o rails 3.2.11 (você atualizou, certo ?) No Windows server 2008 r2 com SQL Server (provavelmente a versão mais recente – farei ping disso mais tarde) no IIS 7.5 sem servidor proxy ( apache, nginx, thin, etc). Eu decidi que, se eu tivesse que ir tão longe, vamos ter certeza de que ainda podemos usar o pipeline de ativos.

Este tutorial usa ruby ​​versão 1.9.3p194 de 64 bits.

Essa dica funciona a partir de 18 de janeiro de 2013.

Este tutorial não usa a abordagem jruby (embora seja perfeitamente válido)
Para jRuby, verifique esta postagem sobre estouro de pilha; parece preciso: http://stackoverflow.com/questions/1086994/instructions-for-setting-up-iis-and-jruby .

No entanto, voltando ao assunto em questão. O verdadeiro segredo é este: use o instalador do Windows Ruby ( http://rubyinstaller.org/ ) (Luis e qualquer um que trabalhe com ele está fazendo um trabalho fantástico) ou o instalador do Rails ( http://railsinstaller.org/ ), mas não ambos. Se você usar o instalador do rails, você vai ter alguma configuração extra (que pode valer a pena se você quiser RVM, git e ssh).

Etapa 0 (economiza tempo depois):
certifique-se de que seu Gemfile tenha estas joias:

gem 'tiny_tds'
gem
'activerecord-sqlserver-adapter'

Certifique-se de ter estes campos definidos em seu banco de dados.yml

development:
adapter
: sqlserver
host
: YOUR_HOST_NAME
database
: DATABASE_NAME_HERE
username
: USERNAME_HERE
password
: PASSWORD_HERE

obviamente, certifique-se de substituir todas as frases exageradas por seus valores reais.

Etapa um:
instalar o aplicativo Zoo da Heliotech:
http://www.helicontech.com/zoo/install.htm

Por mais que me dói dizer isso, eu não usei capistrano, no entanto. Eles têm um arquivo deploy.rb gerado automaticamente em uma opção de “aplicativo rails”.
Por mais que eu quisesse usar o capistrano, este servidor era uma solução temporária, então não tenho motivos para acreditar que o arquivo capistrano não teria funcionado, mas não consegui realmente testá-lo.

Outro repositório que pode ser de interesse é: https://github.com/SciMed/capistrano-windows-server
Sua milhagem pode variar.

Mesmo que a implantação em questão seja temporária, ainda está sendo usada na produção hoje com resultados decentes. Terei que ver se consigo algumas estatísticas reais. Você terá que executar todas as tarefas normais de rake como

bundle exec rake assets:precompile

No entanto, acho que o Zoo é útil para uso em produção real.
Se você tiver sua escolha, fique com nginx + unicórnio ou apache + passageiro, etc.

O único grande aborrecimento é ter certeza de que seu arquivo web.config (uma coisa do IIS) está correto.

Aqui está um resumo ( https://gist.github.com/4570961 ) de um arquivo web.config IIS funcional conhecido. Retirei os dados do nosso mundo real (identificação do site) dele. Se você vir UPPERCASE_VALUES, substitua-os pelo que faz sentido. O arquivo web.config pertence fora do diretório público na raiz do rails.

Deixei a opção de executar isso no modo de 64 bits ou 32 bits.
Ele está usando FCGI por meio de Rack no final do dia.

A principal diferença entre o arquivo gist web.config e o padrão é que garantimos que todos os verbos HTTP de que o rails precisa estejam disponíveis. Tivemos um problema com a API JSON do devise.

Descobri que eu era apenas um idiota e tinha o código incorreto.
No entanto, depois de alguns testes de unidade, achei que valia a pena declarar explicitamente quais verbos são permitidos, porque já li sobre o IIS ser estranho com o POST. Não sou um especialista em IIS e não tenho certeza se este é um problema contínuo ou não.