Description
DuckRails is a development tool.
Its main purpose is to allow developers to quickly mock API endpoints that for many possible reasons they can't reach at a specific time.
DuckRails alternatives and similar gems
Based on the "Mock" category.
Alternatively, view DuckRails alternatives based on common mentions on social networks and blogs.
-
WebMock
Library for stubbing and setting expectations on HTTP requests in Ruby. -
ActiveMocker
Generate mocks from ActiveRecord models for unit tests that run fast because they don’t need to load Rails or a database. -
Impersonator
Ruby library to record and replay object interactions -
Ruby DnsMock
DNS mock server written on 💎 Ruby. Mimic any DNS records for your test environment with fake DNS server. -
Request Interceptor
Sinatra based foreign API simulation for your testsuite -
OpenApiImport
Ruby gem open_api_import -- Import a Swagger or Open API file and create a Ruby Request Hash file including all requests and responses
PopRuby: Clothing and Accessories for Ruby Developers
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of DuckRails or a related project?
README
DuckRails
DuckRails is a development tool.
Its main purpose is to allow developers to quickly mock API endpoints that for many possible reasons they can't reach at a specific time.
If it looks like a duck, walks like a duck and quacks like a duck, then it's a duck :duck:
How it works
The application allows creating new routes dynamically to which developers can assign static or dynamic responses:
- body
- headers
- content type
- status code
or even cause delays, timeouts etc.
Guides
The repository's wiki pages contain all you need to know.
You can find the old DuckRails' guides at my blog.
Example
Mocks index page
Changing mocks order
Setting general mock properties
Defining the response body
Setting response headers
Setting some advanced configuration (delays, dynamic headers, content type & status)
Upon save the route becomes available to the application and you can use the endpoint:
Supported response functionality
You can define static or dynamic responses for a mock.
Currently supported dynamic types are:
- Embedded Ruby
- JavaScript
Embedded Ruby
When specifying dynamic content of embedded Ruby (more options to be added), you can read as local variables:
@parameters
: The parameters of the request@request
: The request@response
: The response
JavaScript
When specifying dynamic content of JavaScript type, you can read as local variables:
parameters
: The parameters of the requestheaders
: The request headers
The script should always return a string (for JSON use JSON.stringify(your_variable)
)
Route paths
You can specify routes and access their parts in the @parameters variable, for example:
/authors/:author_id/posts/:post_id
give you access to the parameters with:
@parameters[:author_id]
@parameters[:post_id]
Quick setup (development environment)
- Clone the repository.
- Copy the sample database configuration file (
config/database.yml.sample
) underconfig/database.yml
and edit it to reflect your preferred db configuration (defaults to sqlite3). If you change the database adapter, make sure you include the appropriate gem in yourGemfile
(ex. for mysqlgem 'mysql2'
) - Execute
bundle install
to install the required gems. - Execute
rake db:setup
to setup the database. - Execute
rails server
to start the application on the default port. - Duckrails can be run concurrently and in parallelism, thus instead of the default rails server, you may start the puma server with something like:
bundle exec puma -t 8:16 -w 3
Better setup (production environment)
- Clone the repository.
- Copy the sample database configuration file (
config/database.yml.sample
) underconfig/database.yml
and edit it to reflect your preferred db configuration (defaults to sqlite3). If you change the database adapter, make sure you include the appropriate gem in yourGemfile
(ex. for mysqlgem 'mysql2'
) - Execute
bundle install
to install the required gems. - Export an env variable for your secret key base:
export SECRET_KEY_BASE="your_secret_key_base_here"
- Execute
RAILS_ENV=production rake db:setup
to setup the database. - Execute
RAILS_ENV=production rake assets:precompile
to generate the assets. - Execute
bundle exec rails s -e production
to start the application on the default port. - Duckrails can be run concurrently and in parallelism, thus instead of the default rails server, you may start the puma server with something like:
RAILS_ENV=production bundle exec puma -t 8:16 -w 3
Database configuration
The application is by default configured to use sqlite3. If you want to use another configuration, update the config/database.yml
accordingly to match your setup.
Docker
A docker image is available at docker hub under iridakos/duckrails.
To obtain the image use:
docker pull iridakos/duckrails
To start the application and bind it to a port (ex. 4000) use:
docker run -p 4000:80 iridakos/duckrails:latest
Contributing
- Fork it ( https://github.com/iridakos/duckrails/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
License
This application is open source under the MIT License terms.
*Note that all licence references and agreements mentioned in the DuckRails README section above
are relevant to that project's source code only.