![Crie um servidor FTP seguro com Linux e SSH](https://optimuscloud.com.br/wp-content/uploads/2024/06/1719670924_Crie-um-servidor-FTP-seguro-com-Linux-e-SSH-150x150.jpg)
Crie um servidor FTP seguro com Linux e SSH
29 de junho de 2024![Atualizar o vCenter Server para 8.0 Atualização 3](https://optimuscloud.com.br/wp-content/uploads/2024/06/1719687605_Atualizar-o-vCenter-Server-para-80-Atualizacao-3-150x150.png)
Atualizar o vCenter Server para 8.0 Atualização 3
29 de junho de 2024Um dos primeiros posts que publiquei aqui foi sobre o Sinatra, porque eu tinha certeza que a maioria das pessoas não estava familiarizada com essa versão “mini” do Ruby on Rails. Talvez eu também tenha assumido que Rails era um framework do qual os desenvolvedores web estavam lentamente se cansando. Ruby era considerado lento e Python estava ganhando mais exposição em aplicações de dados. Rails também tinha a reputação de ser difícil de escalar. Quando o Node.js era novo, as pessoas ficavam intrigadas em trabalhar diretamente com bibliotecas JavaScript.
Mas Rails ainda está aqui, e talvez até passando por um pequeno renascimento.
A maneira como você pode prototipar rapidamente no Rails e ainda assim construir uma “pilha completa” também incorpora os objetivos dos frameworks mais recentes.
Os princípios originais do Rails são tão parte do desenvolvimento moderno que vale a pena aprender o framework tanto para isso quanto para a comunidade em geral. A maneira como você pode prototipar rapidamente e ainda assim construir uma “pilha completa” também incorpora os objetivos das estruturas mais recentes.
Comparado com a multiplicidade de projetos JavaScript, o framework Rails “opinativo” – que notoriamente favorece a convenção em vez da configuração – parece uma âncora muito estável. As vantagens comerciais de aprender uma pilha que outras equipes levaram para uma comunidade próspera, com uma estrutura de teste, um mapeador relacional de objetos (ORM) conhecido e muitos exemplos com estruturas responsivas confiáveis como Bootstrap, são uma vantagem distinta. E o tempo ajudou a eliminar alguns dos velhos problemas.
Este post é para pessoas que, como eu, pararam de usar Rails, mas querem ver como é agora — e para aqueles que presumiram que era algo que apenas seus pais se importariam.
Seguirei este guia Rails, que usa um blog como aplicativo de demonstração. A versão atual é 7.1.3.4. Vou fazer uma instalação completa; Fiz uma instalação mais simples quando olhei pela primeira vez para o Hotwire. Não entrarei em detalhes do padrão model-view-controller (MVC) ou dos meandros do Ruby Version Manager (rvm).
Instalando Ruby e Rails
Vou começar no meu shell Warp. Eu sei que preciso de algum tipo de banco de dados e de uma versão atualizada do Ruby.
Primeiro vamos verificar meu Ruby:
Isso deve servir, já que o guia está procurando algo mais que 2,7.
O guia sugere SQLite3 e tudo bem:
Espero não precisar de uma chave nem nada, porque não consigo me lembrar.
Não é novidade que minha instalação original do Rails é antiga, provavelmente do meu tutorial Hotwire em 2022:
Agora, está tudo bem, mas provavelmente usei originalmente o rvm para instalar o Ruby – e também preciso atualizar os certificados SSL. Este é um pequeno solavanco que irá parar algumas pessoas, mas quando você estiver ciente disso, provavelmente poderá contorná-lo.
Meus problemas são principalmente por não atualizar certificados e não apenas reiniciar o shell. Porém, a segunda linha aqui, onde os certificados são atualizados, é a chave:
Se você estiver instalando do zero, é improvável que esses problemas surjam. Agora estou no Rails 7.1.3.4.
Agora, aqui está um aparte interessante: a IA dentro do Warp apenas assumi e executei as várias atualizações sugeridas. Eu definitivamente não esperava isso, mas aqui temos IA corrigindo problemas de Ruby e Rails. Isso é certamente novo.
Executando um gerador
Com o Rails instalado, agora estou pronto para executar um gerador. Isso produz arquivos gerados a partir de modelos que fazem muito trabalho inicial para você – se você quiser começar a partir de um projeto padrão. Como estou seguindo vagamente um guia, irei construir o blog. Talvez pouco inspirador, mas incluirá todas as partes nas quais estou interessado.
Vejamos o que obtenho depois de executar o “rails new blog” e passar para o criado blog diretório:
Portanto, obter um Dockerfile gratuito é uma novidade para mim.
A maior parte do desenvolvimento ocorrerá no aplicativo diretório. Mas devo começar com o configuração diretório. Existem dois arquivos que já são de interesse.
O primeiro é o puma.rb arquivo, pois isso sugere que puma será o servidor. Quando trabalhei pela última vez em um projeto Rails, o servidor era conhecido por algum outro substantivo. Olhando para dentro:
# Specifies that the worker count should equal the number of processors in production. if ENV("RAILS_ENV") == "production" require "concurrent-ruby" worker_count = Integer(ENV.fetch("WEB_CONCURRENCY") {Concurrent.physical_processor_count}) workers worker_count if worker_count > 1 end # Specifies the `worker_timeout` threshold that Puma will use to wait before # terminating a worker in development environments. worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development" # Specifies the `port` that Puma will listen on to receive requests; default is 3000. port ENV.fetch("PORT") { 3000 } # Specifies the `environment` that Puma will run in. environment ENV.fetch("RAILS_ENV") { "development" }
RAILS_ENV é como o Rails sabe qual ambiente você está construindo com: desenvolvimento, teste ou Produção. Você também pode ver a porta que o servidor usará por padrão: 3.000. E algumas das configurações de simultaneidade para eles.
O outro arquivo de interesse imediato é rotas.rbpois é onde os mapeamentos REST – ou rotas – residirão.
Rails.application.routes.draw do # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html # Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500. # Can be used by load balancers and uptime monitors to verify that the app is live. get "up" => "rails/health#show", as: :rails_health_check # Defines the root path route ("/") # root "posts#index" end
Posso ver que ainda não há mapeamentos reais aqui.
OK. Como estou usando um modelo, já devo ter um aplicativo Rails disponível. Tudo que preciso fazer é iniciar um servidor:
Não entendo como um puma também é uma águia, mas vamos ignorar isso. Deve haver algo disponível em http://localhost:3000 — você deverá ver uma página com o emblema Rails e alguns números de versão. Como estou no ambiente de desenvolvimento, posso simplesmente deixar isso ativado (ele será atualizado automaticamente conforme os arquivos do projeto forem alterados).
Agora adicionarei uma rota e pedirei ao gerador para criar os bits do MVC que farão o trabalho neste aplicativo de demonstração. Precisarei de uma visualização, que é principalmente HTML, e de um controlador para lançar código na visualização. Além disso, um modelo quando quero trabalhar com dados.
Primeiro, adicionarei uma rota para config/rotas.rb lidar com artigos. Lembre-se, este é um aplicativo de blog.
Rails.application.routes.draw do get "/articles", to: "articles#index" ... end
Isso significa apenas que a solicitação REST GET está ativada /artigos procurará o método index dentro do controlador Articles. A seguir, direi ao gerador para realmente criar o controlador Articles. Como o Rails é guiado por convenções, ele pode facilmente criar código de modelo com apenas um nome:
Essa segunda parte foi criada pela IA da Warp, mas eu a incluí porque é útil.
Então isso é suficiente para começar a usar o servidor com a rota? Vamos perguntar ao navegador:
Hmm, o que o shell do servidor disse?
Bem, tudo correu bem. Portanto, a página era literalmente apenas a visualização daquele index.html.erb:
<h1>Articles#index</h1> <p>Find me in app/views/articles/index.html.erb</p>
Criando um modelo
A convenção já define muitas coisas, como o relacionamento entre o nome do controlador e os diretórios do projeto. Então agora quero que a convenção continue a funcionar para eu criar um modelo.
Em breve precisarei de um banco de dados para como quiser armazenar meus “artigos”. Mas criarei um modelo para acompanhar o controlador e a visualização, que definirei como tendo um título e um corpo:
Agora estou caminhando em direção ao infame Registro Ativo; a camada Rails que se comunica com o banco de dados. Eu criei o arquivo de modelo vazio artigo.rb e uma misteriosa “migração”, que é uma instrução para o banco de dados:
class CreateArticles < ActiveRecord::Migration(7.1) def change create_table :articles do |t| t.string :title t.text :body t.timestamps end end end
Esse é claramente um número de versão entre colchetes, o que é novo para mim.
Bem, esse é um bom começo para desenvolver com Rails. Em resumo, selecionamos os requisitos para desenvolvimento em Rails, como iniciar a prototipagem com um servidor funcional quase imediatamente e como a convenção permite gerar componentes de modelo MVC usando apenas um nome.
O post Retorne ao Rails Way: Instalando Ruby on Rails em 2024 apareceu pela primeira vez em The New Stack.