API-only Rails app generated using the command:
rails new allsearch_api --api --skip-javascript --skip-asset-pipeline --skip-spring --skip-test --no-rc --skip-active-record
Requires:
git clone git@github.com:pulibrary/allsearch_api.git
cd allsearch_api
asdf install
bundle install
brew install wget
bundle exec rake servers:start
bundle exec rails s
bundle exec rspec
bundle exec rubocop
bundle exec reek
This repository uses semgrep to:
To run semgrep locally:
brew install semgrep
semgrep --config auto . # run rules from the semgrep community
config/routes
get '/search/new_service/', to: 'new_service#show', defaults: { format: 'json' }
ServiceController
and/or implement your own #show
method.Parsed
module in your model.Document
and implement a #doc_keys
method.
#doc_keys
should return a list of fields (as symbols) that will be
presented in allsearch's API response. Each symbol should match the
name of a method in this model.Documentation lives in https://allsearch-api.princeton.edu/api-docs
To update the api documentation for a service:
spec/requests/api/
./bin/rails generate rspec:swagger CatalogController --spec_path requests/api/
bundle exec rake rswag:specs:swaggerize
.swagger/v1/swagger.yaml
.This repo uses vacuum to validate that the swagger.yaml file meets the OpenAPI standard.
brew install daveshanley/vacuum/vacuum
vacuum lint -d swagger/**/*.yaml
In order to update the banner at /banner
, you can either update it on the rails console, or use a rake task.
Valid values for 'alert_status' are info|success|warning|error
There is a rake task that can accept multiple arguments. The arguments are [text, alert_status, dismissible, autoclear]
. The arguments are comma delimited, with no spaces. If there is an argument you want to skip, just leave it blank, but leave any commas that might surround it (similar to a csv file). Depending on your shell, you may need to escape the brackets surrounding the arguments.
If there are any commas in your text, you will need to escape them using \
bundle exec rake banner:update\['new banner',info,true,true\]
bundle exec rake banner:update\['newer banner',,,false\]
LONG_HTML="<h2>All-Search Updated</h2><p> Introducing our new and improved All-Search\, upgraded with advanced technology and designed based on your feedback to enhance your research experience. Share your experience and help us improve it further by completing this <a href='https://example.com'>brief survey</a></p>"
bundle exec rake banner:update\["$LONG_HTML",'info',true,false\]
Can be run locally against a remote environment. Must be on VPN.
bundle exec cap staging banner:enable
bundle exec cap staging banner:disable
Must be done on the environment where you want to change it
bundle exec flipper enable banner
bundle exec flipper disable banner
Must be done on the environment where you want to change it
bundle exec flipper enable permanent_host # sets library host to library.princeton.edu
bundle exec flipper disable permanent_host # sets library host to library.psb-prod.princeton.edu