Git Product home page Git Product logo

cs_comments_service's Introduction

Part of edX code.

edX Comments Service/Forums Build Codecov

An independent comment system which supports voting and nested comments. It also supports features including instructor endorsement for education-aimed discussion platforms.

Getting Started

If you are running cs_comments_service as part of edx-platform development under devstack, it is strongly recommended to read those setup documents first. Note that devstack will take care of just about all of the installation, configuration, and service management on your behalf. If running outside of devstack, continue reading below.

This service relies on Elasticsearch and MongoDB. By default the service will use the Elasticsearch server available at http://localhost:9200 and the MongoDB server available at localhost:27017. This is suitable for local development; however, if you wish to change these values, refer to config/application.yml and config/mongoid.yml for the environment variables that can be set to override the defaults.

Install the requisite gems:

$ bundle install

To initialize indices:

Setup search indices. Note that the command below creates comments_20161220185820323 and comment_threads_20161220185820323 indices and assigns comments and comment_threads aliases. This will enable you to swap out indices (e.g. rebuild_index) without having to take downtime or modify code with a new index name.

$ bin/rake search:initialize

To validate indices exist and contain the proper mappings:

$ bin/rake search:validate_indices

To rebuild indices:

To rebuild new indices from the database and then point the aliases comments and comment_threads to each index which has equivalent index prefix, you can use the rebuild_indices task. This task will also run catch up before and after aliases are moved, to minimize time where aliases do not contain all documents.

$ bin/rake search:rebuild_indices

You can also adjust the batch size (e.g. 200) and the sleep time (e.g. 2 seconds) between batches to lighten the load on MongoDB.

$ bin/rake search:rebuild_indices[200,2]

Run the server:

$ ruby app.rb

By default Sinatra runs on port 4567. If you'd like to use a different port pass the -p parameter:

$ ruby app.rb -p 5678

Rake timeout configuration should be set as env varaiable, the default value is 15 second. to set to 20 second:

$ RACK_TIMEOUT_SERVICE_TIMEOUT=20 ruby app.rb -p 5678

Running Tests

Tests are built using the rspec framework, and can be run with the command below:

$ bin/rspec

If you'd like to view additional options for the command, append the --help option:

$ bin/rspec --help

Running Tests with Docker

You can also use docker-compose to run your tests as follows (assuming you have docker-compose installed):

$ docker-compose -f .github/docker-compose-ci.yml run --rm test-forum

To debug the tests using docker-compose, first start up the containers:

$ # Note: Ignore errors creating forum_testing container after it was already started
$ docker-compose -f .github/docker-compose-ci.yml up

Next, shell into the container:

$ docker exec -it forum_testing bash

Finally, from inside the container, start the tests:

$ cd /edx/app/forum/cs_comments_service/
$ .github/run_tests.sh

Tips:

  • After running for the first time, you can speed up run_tests.sh by commenting out bundle install and sleep 10, which is only needed the first time.
  • Add binding.pry in code anywhere you want a breakpoint to start debugging.

Internationalization (i18n) and Localization (l10n)

To run the comments service in a language other than English, set the SERVICE_LANGUAGE environment variable to the language code for the desired language. Its default value is en-US.

Setting the language has no effect on user content stored by the service. However, there are a few data validation messages that may be seen by end users via the frontend in edx-platform. These will be translated to SERVICE_LANGUAGE assuming a suitable translation file is found in the locale/ directory.

edX uses Transifex to host translations. To use the Transifex client, be sure it is installed (pip install transifex-client will do this for you), and follow the instructions here to set up your .transifexrc file.

To upload strings to Transifex for translation when you change the set of translatable strings: bin/rake i18n:push

To fetch the latest translations from Transifex: bin/rake i18n:pull

The repository includes some translations so they will be available upon deployment. To commit an update to these: bin/rake i18n:commit

License

The code in this repository is licensed under version 3 of the AGPL unless otherwise noted.

Please see LICENSE.txt for details.

How to Contribute

Contributions are very welcome. The easiest way is to fork this repo, and then make a pull request from your fork. The first time you make a pull request, you may be asked to sign a Contributor Agreement.

Reporting Security Issues

Please do not report security issues in public. Please email [email protected]

Mailing List and IRC Channel

You can discuss this code on the edx-code Google Group or in the edx-code IRC channel on Freenode.

cs_comments_service's People

Contributors

dementrock avatar kevinchugh avatar clintonb avatar robrap avatar asadazam93 avatar xitij2000 avatar feanil avatar golub-sergey avatar arjun810 avatar wajeeha-khalid avatar ibrahima avatar tobz avatar dianakhuang avatar pwnage101 avatar iloveagent57 avatar e0d avatar ahtishamshahid avatar macdiesel avatar sarina avatar bderusha avatar awaisdar001 avatar jtauber avatar coryleeio avatar cpennington avatar tuchfarber avatar gsong avatar usamasadiq avatar pomegranited avatar carsongee avatar 0x29a avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.