2022-01-22 18:32:28 +00:00
### Lobsters Rails Project ![build status](https://github.com/lobsters/lobsters/actions/workflows/check.yml/badge.svg)
2012-08-24 15:39:05 +00:00
2017-07-17 17:31:34 +00:00
This is the
2023-06-28 16:24:30 +00:00
[quite sad ](https://web.archive.org/web/20230213161624/https://old.reddit.com/r/rails/comments/6jz7tq/source_code_lobsters_a_hacker_news_clone_built/ )
2021-06-19 04:45:02 +00:00
source code to the
[ghost town ](https://twitter.com/webshitweekly/status/1399935275057389571 ) at
2017-07-06 21:26:10 +00:00
[https://lobste.rs ](https://lobste.rs ).
2021-01-04 14:17:33 +00:00
It is a Rails codebase and uses a SQL (MariaDB in production) backend for the database.
2012-08-24 15:39:05 +00:00
2019-05-29 14:41:57 +00:00
You are free to use this code to start your own [sister site ](https://github.com/lobsters/lobsters/wiki )
2019-05-29 17:08:25 +00:00
because the code is available under a [permissive license ](https://github.com/lobsters/lobsters/blob/master/LICENSE ) (3-clause BSD).
2019-05-29 14:41:57 +00:00
We welcome bug reports and code contributions that help use improve [lobste.rs ](https://lobste.rs ).
As a volunteer project we're reluctant to take on work that's not useful to our site, so please understand if we don't want to adopt your custom feature.
2013-02-25 01:52:09 +00:00
2017-03-23 21:46:56 +00:00
#### Contributing bugfixes and new features
2013-02-25 01:52:09 +00:00
2019-05-29 14:41:57 +00:00
We'd love to have your help.
Please see the [CONTRIBUTING ](https://github.com/lobsters/lobsters/blob/master/CONTRIBUTING.md ) file for details.
2022-05-05 12:47:57 +00:00
If you have questions, there is usually someone in [our chat room ](https://lobste.rs/chat ) who's familiar with the code.
2013-02-25 01:52:09 +00:00
2023-12-06 14:50:04 +00:00
#### Development setup
2012-08-24 15:39:05 +00:00
2018-04-19 10:34:47 +00:00
Use the steps below for a local install or
[lobsters-ansible ](https://github.com/lobsters/lobsters-ansible ) for our production deployment config.
2019-07-10 12:44:36 +00:00
There's an external project [docker-lobsters ](https://github.com/utensils/docker-lobsters ) if you want to use Docker.
2018-03-26 01:21:26 +00:00
2020-07-14 00:25:18 +00:00
* Install the Ruby version specified in [.ruby-version ](https://github.com/lobsters/lobsters/blob/master/.ruby-version )
2012-08-24 15:39:05 +00:00
2012-09-18 15:13:25 +00:00
* Checkout the lobsters git tree from Github
2017-11-27 16:58:33 +00:00
```sh
2023-10-05 21:02:19 +00:00
$ git clone git@github.com:lobsters/lobsters.git
2017-11-27 16:58:33 +00:00
$ cd lobsters
lobsters$
```
2012-08-24 15:39:05 +00:00
2017-08-22 14:49:26 +00:00
* Install Nodejs, needed (or other execjs) for uglifier
2017-11-27 16:58:33 +00:00
```sh
Fedora: sudo yum install nodejs
Ubuntu: sudo apt-get install nodejs
OSX: brew install nodejs
```
2023-12-06 14:50:04 +00:00
* Create a MariaDB (other DBs supported by ActiveRecord may work, only MySQL and
2013-05-26 17:56:31 +00:00
MariaDB have been tested) database, username, and password and put them in a
2017-07-17 17:31:34 +00:00
`config/database.yml` file. You will also want a separate database for
running tests:
2012-08-24 15:39:05 +00:00
2017-11-27 16:58:33 +00:00
```yaml
development:
adapter: mysql2
encoding: utf8mb4
reconnect: false
database: lobsters_dev
socket: /tmp/mysql.sock
username: *dev_username*
password: *dev_password*
test:
adapter: mysql2
encoding: utf8mb4
reconnect: false
database: lobsters_test
socket: /tmp/mysql.sock
username: *test_username*
password: *test_password*
```
2012-08-24 15:39:05 +00:00
2023-12-06 14:50:04 +00:00
* Run `bin/setup` to install dependencies and set up db
2012-08-24 15:39:05 +00:00
2017-11-27 16:58:33 +00:00
```sh
2023-12-06 14:50:04 +00:00
lobsters$ bin/setup
2017-11-27 16:58:33 +00:00
```
2023-12-06 14:50:04 +00:00
* If when installing the `mysql2` gem on macOS, you see
`ld: library not found for -l-lpthread` in the output, see
[this solution ](https://stackoverflow.com/a/44790834/204052 ) for a fix.
You might also see `ld: library not found for -lssl` if you're using
macOS 10.4+ and Homebrew `openssl` , in which case see
[this solution ](https://stackoverflow.com/a/39628463/1042144 ).
2017-11-27 16:58:33 +00:00
2019-08-07 12:34:38 +00:00
* On your production server, copy `config/initializers/production.rb.sample`
2019-08-12 03:15:05 +00:00
to `config/initalizers/production.rb` and customize it with your site's
2019-08-07 12:34:38 +00:00
`domain` and `name` . (You don't need this on your dev machine).
2013-06-30 06:29:51 +00:00
2023-12-06 14:50:04 +00:00
* On your personal computer, you probably want to add some sample data.
2012-08-24 15:39:05 +00:00
2017-11-27 16:58:33 +00:00
```sh
2023-12-06 14:50:04 +00:00
lobsters$ rails fake_data
2017-11-27 16:58:33 +00:00
```
2012-09-02 14:34:39 +00:00
2023-12-06 14:50:04 +00:00
* Run the Rails server in development mode.
2018-10-11 18:28:35 +00:00
You should be able to login to `http://localhost:3000` with your new `test` user:
2012-09-02 14:34:39 +00:00
2017-11-27 16:58:33 +00:00
```sh
lobsters$ rails server
```
2016-04-24 01:20:55 +00:00
2018-10-11 18:28:35 +00:00
* Deploying the site in production requires setting up a web server and running the app in production mode.
There are more tools and options available than we can describe; find a guide or an expert.
The lobsters-ansible repo has our config files to crib from. Some app-specific notes:
* Set up crontab or another scheduler to run regular jobs:
2016-04-24 01:20:55 +00:00
2017-11-27 16:58:33 +00:00
```
2019-04-21 16:47:13 +00:00
*/5 * * * * cd /path/to/lobsters && env RAILS_ENV=production sh -c 'bundle exec ruby script/mail_new_activity; bundle exec ruby script/post_to_twitter; bundle exec ruby script/traffic_range'
2017-11-27 16:58:33 +00:00
```
2018-10-11 18:28:35 +00:00
* See `config/initializers/production.rb.sample` for GitHub/Twitter integration help.
2018-02-01 01:07:00 +00:00
2022-06-01 10:57:18 +00:00
* You probably want to use [git-imerge ](https://lobste.rs/s/dbm2d4 ) to pull in
changes from Lobsters to your site.
2018-02-01 01:07:00 +00:00
#### Administration
2018-04-11 12:48:00 +00:00
Basic moderation happens on-site, but most other administrative tasks require use of the rails console in production.
2018-04-11 13:18:02 +00:00
Administrators can create and edit tags at `/tags` .