Skip to content
Computing-focused community centered around link aggregation and discussion
Ruby HTML JavaScript CSS Other
Branch: develop
Clone or download
Pull request Compare This branch is 472 commits ahead, 961 commits behind lobsters:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app
bin
config
db
docs
extras
lib
license
maintenance
public
script
spec
tmp
vendor/assets
.dockerignore
.env-example
.gitignore
.rspec
.ruby-version
CONTRIBUTING.md
Dockerfile
Gemfile
Gemfile.lock
LICENSE
README.md
Rakefile
Vagrantfile
approved_tags.yaml
config.ru
docker-compose.yml
docker-entrypoint.sh
gocd.yaml
nginx.conf

README.md

Gambe.ro

gambe.ro is a community of italian programmers built using lobste.rs software.

This code is forked from journalduhacker.net (code available here). Journalduhacker, in turn, is a fork of lobste.rs (code available here).

License

Licensed under the AGPLv3 license. See LICENSE for the full license.

Contributing

Please see the CONTRIBUTING file.

Setup

  • Install Docker.

  • Clone the repository:

    $ git clone https://github.com/gambe-ro/lobsters.git
    $ cd lobsters
  • Define the following environment variables in the file .env:

    • RAILS_ENV: the environment in which Ruby on Rails will run. It must be one of the following: development, test, production.
    • SECRET_KEY_BASE: a secret string used to verify the validity of cookies.
    • MYSQL_USER: the MariaDB username (for the user that gambe.ro will use).
    • MYSQL_PASSWORD: the MariaDB password.
    • MYSQL_ROOT_PASSWORD: the root password for MariaDB (used only for table initialization).
    • MYSQL_DATABASE: the MariaDB database name.
    • SMTP_USERNAME: the username for the SMTP server (whose address is hardcoded in config/initializers/email.rb).
    • SMTP_PASSWORD: the password for the SMTP server.
  • Apply some manual security tweaks:

    • If you are deploying gambe.ro, edit your .bashrc (or the equivalent for your shell) and add the following:
    export DOCKER_CONTENT_TRUST=1

    then run the next steps in a new shell.

    • If you are developing gambe.ro, remove read_only: true from the app container in docker-compose.yml.
  • Run scripts/docker-run.sh:

    $ scripts/docker-run.sh

    This command will provision two containers: one for the Ruby on Rails server and one for the MariaDB database.

  • You should now be able to view the website at 172.20.0.2:8080 (you can change this address from the docker-compose.yml file). Moreover, you should be able to login with the test account (password is test).

When in production, don't forget to copy maintenance/ somewhere and make Nginx point to it (see nginx.conf).

Additional setup steps

  • Define your site's name and default domain, which are used in various places, in a config/initializers/production.rb or similar file:

    class << Rails.application
      def domain
        "example.com"
      end
    
      def name
        "Example News"
      end
    end
    
    Rails.application.routes.default_url_options[:host] = Rails.application.domain
  • Put your site's custom CSS in app/assets/stylesheets/local.

  • In production, set up crontab or another scheduler to run regular jobs:

    */20 * * * * cd /path/to/gambero && env RAILS_ENV=production bundle exec rake ts:index > /dev/null

Moderation

On-site tasks are carried out directly on the website. Console tasks are carried out through the Ruby on Rails console in production. To start the Rails console: rails c. To start the Rails console and rollback on exit: rails c --sandbox.

On-site tasks

Edit/Delete a story

By clicking the 'edit' button under the story title you can:

  • Delete the story
  • Edit the URL
  • Edit the title
  • Add or remove tags
  • Edit the body text
  • Merge the story into another

Delete a comment

Click the 'delete' button next to it.

Attach a moderation note to a user

Inside a user profile page, you can write moderation notes for that particular user. Only moderators can see them.

Disable invites for a user

Inside a user profile page, click the 'Disable Invites' button at the bottom. You will be able to re-enable invites by clicking on 'Enable Invites'.

Ban a user

Inside a user profile page, click the 'Ban' button at the bottom. You must provide a reason. You will be able to unban the user by clicking on 'Unban'.

Read the latest 10 moderation notes and moderations applied to a user

You can see them inside a user profile page. To see more than 10, you need to use the console.

Manage hats requests

Go to /hats/requests.

Console tasks

A typical command to add a resource is:

name_of_resource.create(attribute1: value1, attribute2: value2, ...)

To edit a resource first assign it to a variable, edit it and then save:

story = Story.find_by(short_id: story_short_id)
story.attribute = new_attribute_value
story.save()

To delete a resource (please see difference between delete and destroy):

story = Story.find_by(short_id: story_short_id)
story.delete() # or story.destroy()

Note: all resources can be added, edited and deleted through the console. However, it will be usually used in the following cases:

Add/Edit/Disable tag

Available attributes:

  • tag: name of the tag
  • description: description of the tag
  • privileged: if set to true, only moderators can post stories with this tag
  • is_media: (?)
  • inactive: if set to true, users cannot post stories with this tag anymore
  • hotness_mod: (?)
You can’t perform that action at this time.