Este projeto pretende ser:
Resumo da especificação:
Aqui está o seu aplicativo móvel cliente de contraparte que consome dados desta API -> Android -Base
Instale o Ruby versão 2.3.0 e defina -o com o seu Ruby Environment Manager (mais informações aqui).
Instale o PostGres e inicie o servidor PostgreSQL em primeiro plano (mais informações aqui).
Clone o repositório e entre nele:
git clone git://github.com/jordifierro/rails-api-base.git --origin rails-api-base your-project-name
cd your-project-name
./bin/rename_project YourProjectName
./bin/remove_notes
./bin/create_psql_user yourprojectname
./bin/setup
rspec
./bin/reset_git https://github.com/yourusername/your-project-name.git
É isso, agora você pode começar a desenvolver seu próprio aplicativo!
(Durante o desenvolvimento do localhost, inicie o correio para receber a confirmação do usuário e recuperar e -mails de senha)
gem install mailcatcher
mailcatcher
O aplicativo em si está quase vazio, ele tem como objetivo fornecer alguns módulos básicos, implementar as estruturas com alguns padrões e fornecer código de amostra. Aqui estão as especificações:
O aplicativo inclui apenas os módulos relacionados ao Rails-API, por isso é mais fino que um aplicativo normal, mas não possui alguns recursos (que podem ser adicionados manualmente, se necessário). A arquitetura da API segue Rails e HTTP RESTful Good Practices, como:
As rotas de terminal e a estrutura do código estão prontas para adicionar novas versões da API. A versão é escolhida via headers['Accept'] com valores como application/vnd.railsapibase.v1 para usar a primeira versão.
Para fornecer o código de amostra do aplicativo, ele foi desenvolvido um código para gerenciar notes (como representação em notas em papel manuscrito), composto por um title e um content . Assim, o aplicativo possui as rotas de notas, controlador, modelo e RSPECs para trabalhar com essas notas.
Seu objetivo exclusivo é ser um guia de como adicionar novo código, para que seja excluído pelo script shell bin/remove_notes .
Para estruturar os recursos do controlador global da API, diferentes módulos foram implementados como ActiveSupport :: Preocupado e testado usando controladores falsos. Esses módulos são incluídos no apicontroller, que é o controlador do pai do restante dos controladores (verifique este post). No momento, existem 4 módulos: autenticação, manuseio de erros, internacionalização e expiração da versão (verifique isso). O Código Clima é o serviço usado para verificar se este e todo o restante do código segue boas práticas (você deve ativá -lo para que seu projeto o use).
O codeclimate também pode ser executado localmente com sua CLI.
Quase toda API requer usuários, sessões e autenticações; portanto, esse é o recurso mais importante deste aplicativo. A solução escolhida usa has_secure_password e has_secure_token com uma implementação personalizada para lidar com sessões e usuários:
Um token é devolvido quando os usuários fazem login e deve ser definido como headers['Authorization'] em solicitações posteriores para autenticá -los. Mais informações sobre isso em (este post)
Para verificar se uma versão ainda pode ser usada, há um módulo que filtra isso antes de cada chamada de método. Ele retornará o erro se a versão expirar e também houver um terminal para verificar a data de vencimento do cliente (por exemplo: para avisar o usuário para atualizar o aplicativo). Se você deseja definir a data de expiração para uma versão concreta, basta definir um número inteiro formatado como string como ENV['LAST_EXPIRED_VERSION'] . Todas as versões iguais ou abaixo do especificado enviarão a mensagem de erro de atualização quando solicitado. O sistema para definir um aviso para algumas versões é o mesmo, usando ENV['LAST_WARNED_VERSION'] para definir a versão superior que você deseja avisar. Mais informações sobre isso em (este post)
O aplicativo é traduzido para o inglês (idioma padrão) e o espanhol (assim como o exemplo de tradução). Existe um módulo simples que retira a localidade do request.env['HTTP_ACCEPT_LANGUAGE'] (que pode ser definido através do cabeçalho Accept-Languange ) e o define para o sistema para retornar automaticamente a tradução apropriada. Mais informações sobre isso em (este post)
Para testar que todas as traduções necessárias estão definidas para um idioma específico, descommentando a seguinte linha no arquivo spec_helper.rb , coloque o idioma de destino e execute rspec :
I18n.default_locale = :es
Para adicionar algum controle sobre os clientes da API, existe um sistema secreto de verificação de chave de API que pode ser ativado para garantir que esse seja um cliente válido que cria o usuário. Para ativar este serviço, basta definir um valor para ENV['SECRET_API_KEY'] . A chave da API secreta deve ser enviada nos headers['Authorization'] ao ligar para criar um novo método de usuário.
Este projeto foi desenvolvido usando o processo TDD e todo o código é testado usando o RSCEC, seguindo as diretrizes de práticas recomendadas definidas em BetterSpecs.org. É importante manter assim. O Código Clima verifica se os testes cobrem todos os casos de código. O Travis-Ci é um sistema de integração contínuo que executa os testes toda vez que um empurrão é feito. Se você deseja usar esses serviços, precisará habilitá -los em seus sites. Caso contrário, basta excluir o arquivo .travis.yml .
Para evitar o ônus de modificar manualmente o código para preparar os arquivos para iniciar um novo projeto, alguns scripts foram implementados. Você pode encontrá -los dentro do bin/ pasta (eles são auto -destruídos após o uso).
Eles foram analisados por shellcheck.
Para evitar problemas de implantação, o banco de dados do Postgres foi configurado desde o início como o sistema de banco de dados para testes e desenvolvimento. O fato de a Heroku usá -lo como seu sistema de banco de dados padrão também foi considerado.
O projeto usa o Rails 5.1.4 (módulo API) e o Ruby 2.3.0 e pretende ser mantido atualizado usando o Serviço Genmasium. Você deve ativar este serviço para o seu repositório, se quiser usá -lo.
Para aumentar a elegância e a legibilidade do código, este guia de estilo Ruby foi usado como referência. O Rubocop Gem é um analizador de código estático do rubi com base nesse guia de estilo. Apenas corra:
gem install rubocop
rubocop
Lembre -se de que o arquivo .rubocop.yml define a configuração (remova -o se não for usado).
As respostas são formatadas usando a gema ActiveModelSerializers. Os serializadores são responsáveis por formatar o JSON de saída e são uma boa maneira de dissociar essa camada de modelos e controladores. Além disso, eles são versionados como controladores (por exemplo: Api::V1::Serializer ) porque interferem diretamente na saída de cada versão da API. Isso nos ajudará a manter contratos de versão antiga.
Aqui está o seu aplicativo móvel cliente de contraparte que consome dados desta API -> Android -Base
Eu não sou um desenvolvedor experiente em trilhos, então todas as sugestões e contribuições são mais do que bem -vindas!
rspec
rubocop
Infelizmente, ainda não há colaboradores.
http://jordifierro.com