Gems Essenciais para Aplicações Rails

Clark Jason Ngo Blocked Unblock Seguir Seguindo 7 de janeiro

As gemas estão localizadas no Gemfile dentro da pasta do seu projeto. Vamos dar uma olhada em alguns que você vai querer ter.

will_paginate

Adiciona paginação ao seu aplicativo

Instalação

Adicionar ao Gemfile

 gem 'will_paginate' 

Instalar

 instalação do pacote 

Uso

Em um arquivo .html.erb, renderize os links da página na exibição:

 <% = will_paginate @places%> 
 <% @ places.each do | lugar | %> 
<h1> <% = place.name%> </ h1>
<br />
 <% end%> 
 <% = will_paginate @places%> 

No seu controlador, você pode definir quantas entradas por página você deseja exibir. No exemplo abaixo, listará 3 entradas por página.

 def index 
 @places = Place.all.paginate (página: params [: page], per_page: 3) 
 fim 

Fonte: https://github.com/mislav/will_paginate

forma simples

Formulários facilitados!

Instalação

Adicionar ao Gemfile

 gem 'simple_form' 

Instalar

 instalação do pacote 

Execute o gerador

 trilhos geram simple_form: instalar 

Uso

Em um arquivo .html.erb:

 <% = simple_form_for @place do | f | %> 
 <% = f.input: name%> 
 <% = f.input: endereço%> 
 <% = f.input: description%> 
 <br /> 
 <% = f.submit 'Criar', classe: 'btn btn-primário'%> 
 <% end%> 

Fonte: https://github.com/plataformatec/simple_form

conceber

Adiciona gerenciamento de usuários

Instalação

Adicionar ao Gemfile

 gem 'conceber' 

Instalar

 instalação do pacote 

Execute o gerador

 trilhos geram conceber: instalar 

Configurar o dispositivo em config / environments / development.rb

Adicione esta linha:

 config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } 

Editar código em app / views / layouts / application.html.erb

Adicione esta linha:

 <% if notice %> 
<p class="alert alert-success" > <%= notice %> </p>
<% end %>
<% if alert %>
<p class="alert alert-danger" > <%= alert %> </p>
<% end %>

Adicione links de inscrição e login em app / views / layouts / application.html.erb

 <p class="navbar-text pull-right" > 
<% if user_signed_in? %>
Logged in as <strong> <%= current_user.email %> </strong> .
<%= link_to 'Edit profile', edit_user_registration_path, :class => 'navbar-link' %> |
<%= link_to "Logout", destroy_user_session_path, method: :delete, :class => 'navbar-link' %>
<% else %>
<%= link_to "Sign up", new_user_registration_path, :class => 'navbar-link' %> |
<%= link_to "Login", new_user_session_path, :class => 'navbar-link' %>
<% end %>
</p>

Forçar o usuário a ser redirecionado para a página de login, se não estiver logado.

Edite em app / controllers / application_controller.rb

 before_action :authenticate_user! 

Fonte: https://guides.railsgirls.com/devise

geocodificador

Adiciona geocodificação da API do Google

Instalação

Adicionar ao Gemfile

 gem 'geocoder' 

Instalar

 instalação do pacote 

Crie um arquivo de migração, execute isso no seu terminal:

 rails generate migration AddLatitudeAndLongitudeToModel latitude:float longitude:float 
 rake db:migrate 

Exemplo de um arquivo de migração que adiciona colunas de latitude e longitude à tabela de lugares existente:

 classe AlterPlacesAddLatAndLng <ActiveRecord :: Migration [5.0] 
 mudança de defesa 
 add_column: lugares,: latitude,: float 
 add_column: lugares,: longitude,: float 
 fim 
 fim 

Adicione estas linhas ao seu app / model / place.rb

 geocoded_by: address 
 after_validation: geocódigo 

Adicione este script em show.html.erb

 <script> 
 <% if @ place.latitude.present? && @ lugar.longitude.presente? %> 
 function initMap () { 
 var myLatLng = {lat: <% = @ place.latitude%>, lng: <% = @ lugar.longitude%>}; 
 var map = new google.maps.Map (document.getElementById ('map'), { 
 zoom: 15, 
 center: myLatLng 
 }); 
 var marker = new google.maps.Marker ({ 
 position: myLatLng, 
 mapa: mapa, 
 título: 'Olá, mundo!' 
 }); 
 } 
 </ script> 

fonte: https://www.rubydoc.info/gems/geocoder/1.3.7

figaro

Configure facilmente suas APIs na implantação do Heroku

Instalação

Adicionar ao Gemfile

 gem 'figaro' 

Instale e crie um arquivo de config/application.yml comentado e adicione-o ao seu .gitignore

 bundle exec figaro install 

Atualize suas chaves de API em config/application.yml

Para atualizar as chaves da API no heroku, acesse seu terminal:

 figaro heroku: set -e production 
reinício de heroku

Fonte: https://github.com/laserlemon/figaro

carrierwave

uploader de imagens

Instalação

Adicionar ao Gemfile

 gem 'carrierwave' 

Instalar

 instalação do pacote 

No seu terminal

 trilhos geram uploader Image 

Isso gerará isso:

 app/uploaders/image_uploader.rb 

Crie um arquivo de migração

 migração de gails add_image_to_courses image: string 

Execute o arquivo de migração

 rake db: migrate 

Em seu modelo

 classe usuário <ApplicationRecord 
mount_uploader: image, ImageUploader
fim

Adicionar a um html.erb por html.erb app/views/instructor/courses/new.html.erb

 <% = f.input: imagem%> 

Adicionar ao app/controllers/instructor/courses_controller.rb

 params.require (: course) .permit (: title,: description,: cost,: image ) 

Adicionar a show.html.erb ou seja, app/views/instructor/courses/show.html.erb

 <% = image_tag @ course.image, class: 'img-fluid'%> 

Atualize também o seguinte:

  • app/views/courses/show.html.erb
  • app/views/courses/index.html.erb
  • app/views/instructor/courses/show.html.erb

Resolução de imagem com o ImageMagick, mais em carrierwave

Carrierwave em shows que o MiniMagick e o RMagick podem ser usados

Ele mostra aqui app/uploaders/image_uploader.rb

 classe ImageUploader <CarrierWave :: Uploader :: Base 
 # Incluir suporte ao RMagick ou ao MiniMagick: 
 # include CarrierWave :: RMagick 
 # include CarrierWave :: MiniMagick 

Instalando o ImageMagick

Precisamos atualizar o banco de dados de programas do nosso ambiente de desenvolvimento para garantir que, quando instalarmos um programa, recebamos a versão mais recente.

 $ sudo apt-get update 

Instalar o ImageMagick

 $ sudo apt-get install imagemagick 

Instalação MiniMagick

Adicionar ao Gemfile

 gem 'mini_magick' 

Instalar

 instalação do pacote 

Uncomment MiniMagick em app/uploaders/image_uploader.rb

 classe ImageUploader <CarrierWave :: Uploader :: Base 
 # Incluir suporte ao RMagick ou ao MiniMagick: 
 # include CarrierWave :: RMagick 
 incluem CarrierWave :: MiniMagick 

Essa linha dá ao CarrierWave a capacidade de acessar o programa ImageMagick que instalamos em nosso programa, através da gem do MiniMagick. Isso nos permitirá redimensionar a imagem.

Desbloqueia habilidades de redimensionamento de imagem, como resize_to_fill , resize_to_fit , resize_and_pad e resize_to_limit .

Adicione isto em app/uploaders/image_uploader.rb

 # Processar arquivos conforme eles são enviados: 
 processo resize_to_fill: [800, 350] 

Integrando o Amazon S3 para Uploads de Vídeo

Instalação

Adicione esta linha ao Gemfile do seu aplicativo:

 gem 'carrierwave-aws' 

Execute o comando bundle do seu shell para instalá-lo:

 instalação do pacote 

Etapa 1: Configurando o inicializador

Normalmente, nós instalamos a nossa gema primeiro, no entanto, para evitar erros ao trocar da névoa para a AWS, precisamos atualizar nosso inicializador primeiro.

Você pode ler os detalhes de como configurar a gem carrierwave-aws na seção Usage da Documentation . Seguindo o padrão que eles especificam, devemos atualizar config/initializers/carrierwave.rb para ficar assim:

 # config/initializers/carrierwave.rb 
 CarrierWave.configure do |config| 
config.storage = :aws
config.aws_bucket = ENV["AWS_BUCKET"]
config.aws_acl = "public-read"
  config.aws_credentials = { 
access_key_id: ENV["AWS_ACCESS_KEY"],
secret_access_key: ENV["AWS_SECRET_KEY"],
region: ENV["AWS_REGION"]
}
end

Agora salve o arquivo.

Etapa 2: Atualizando nosso Gemfile

Adicione a gem carrierwave-aws conforme descrito na documentação . Edite o Gemfile para ficar assim:

 gem 'carrierwave' 
gem 'mini_magick'
gem 'carrierwave-aws'

Salve o arquivo e execute o comando para instalar a gem.

 $ bundle install 

Em seguida, reinicie seu servidor.

Etapa 3: Adicionar Região ao application.yml

Precisamos adicionar uma região ao nosso arquivo application.yml. Abra seu config/application.yml e adicione esta linha para especificar a região que queremos usar:

 # config/application.yml 
 AWS_ACCESS_KEY: "Your-access-key" 
AWS_SECRET_KEY: "Your-secret-key"
AWS_BUCKET: "Your-bucket"
AWS_REGION: "us-east-1"

Salve o arquivo.

Etapa 4: atualizando o aplicativo de upload

Se você se lembra de antes, especificamos dentro do provedor de armazenamento para o uploader usar :fog . Em vez disso, precisamos mudá-lo para :aws .

 # encoding: utf-8 
 class ImageUploader < CarrierWave::Uploader::Base 
  # Include RMagick or MiniMagick support: 
# include CarrierWave::RMagick
include CarrierWave::MiniMagick
  # Choose what kind of storage to use for this uploader: 
#storage :file
storage :aws
  # A bunch more comments down here.... 
end

Salve o arquivo.

Mais uma coisa que nós teremos que fazer é re-sincronizar o localhost com o heroku. Para fazer isso, precisamos executar um comando simples:

 $ figaro heroku:set -e production 

Certifique-se de que os uploads continuem a funcionar enviando uma imagem para um curso e verifique se ele foi bem-sucedido.

VideoJS

Adicionar arquivo css antes </head>

 <link href="http://vjs.zencdn.net/5.12.6/video-js.css" rel="stylesheet"> 

Adicione arquivos JavaScript antes </body>

 <script src = "http://vjs.zencdn.net/5.12.6/video.js"> </ script> 
 <script src = "http://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"> </ script> 

Nota: Você deve colocar as tags do script videoJS na parte inferior do corpo, caso contrário, você terá problemas ao carregar o player de vídeo devido a Turbolinks.

Obrigado pela leitura! Espero que isso tenha sido útil.