Coder Social home page Coder Social logo

snibox / snibox Goto Github PK

View Code? Open in Web Editor NEW
1.7K 40.0 119.0 916 KB

Self-hosted snippet manager

Home Page: https://snibox.github.io/

Ruby 50.77% JavaScript 15.52% CSS 5.73% Vue 16.70% HTML 11.01% Dockerfile 0.28%
vue rails self-hosted snippets gists notes

snibox's Introduction

Logo

Build Status Maintainability Test Coverage

Snibox is a self-hosted snippet manager. Developed to collect and organize code snippets. Supports various programming languages, markdown, plain text.

Table of Contents

Demo

Click the image below to launch demo:

It may take up to 30 seconds to wake up free Heroku's server.

Screen Shot 2019-06-01 at 12 41 17 AM

Built with

Deployment

Deployment instructions for various platforms available at deployment guide.

Development

Development instructions for various platforms available at development guide.

License

Snibox is released under the MIT License.

snibox's People

Contributors

coderliu avatar dependabot[bot] avatar greysteil avatar gwillmann avatar liamdawson avatar vavgustov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

snibox's Issues

Update ruby

Gemfile: '>= 2.5.0', '< 2.7.0'
Dockerfile: 2.6.1-alpine3.9
Vagrantfile: 2.6.1
Docs: 2.6.1

Implement versions?

current master: v 1.0 + branch 1.0?
multiple files per snippet: v 2.0 + branch 2.0 + master?

docker error An unexpected error occurred: "EINVAL: invalid argument, rmdir '/app/node_modules/.bin'".

  1. Precompile assets:
    Starting snibox_database_1 ... done
    yarn install v1.3.2
    [1/4] Resolving packages...
    [2/4] Fetching packages...
    info [email protected]: The platform "linux" is incompatible with this module.
    info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
    [3/4] Linking dependencies...
    warning "@rails/webpacker > [email protected]" has unmet peer dependency "caniuse-lite@^1.0.30000697".
    warning "@rails/webpacker > [email protected]" has unmet peer dependency "webpack-sources@^1.0".
    warning " > [email protected]" has unmet peer dependency "css-loader@*".
    warning " > [email protected]" has unmet peer dependency "webpack@^4.0.0-beta.1".
    warning "webpack-dev-server > [email protected]" has unmet peer dependency "webpack@^4.0.0".
    error An unexpected error occurred: "EINVAL: invalid argument, rmdir '/app/node_modules/.bin'".
    info If you think this is a bug, please open a bug report with the information provided in "/app/yarn-error.log".
    info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
    Webpacker is installed 🎉 🍰
    Using /app/config/webpacker.yml file for setting up webpack paths
    Compiling…
    Compilation failed:
    /usr/local/bundle/bundler/gems/webpacker-d1016cc51c05/lib/webpacker/webpack_runner.rb:11:in exec': No such file or directory - /app/node_modules/.bin/webpack (Errno::ENOENT) from /usr/local/bundle/bundler/gems/webpacker-d1016cc51c05/lib/webpacker/webpack_runner.rb:11:in block in run'
    from /usr/local/bundle/bundler/gems/webpacker-d1016cc51c05/lib/webpacker/webpack_runner.rb:10:in chdir' from /usr/local/bundle/bundler/gems/webpacker-d1016cc51c05/lib/webpacker/webpack_runner.rb:10:in run'
    from /usr/local/bundle/bundler/gems/webpacker-d1016cc51c05/lib/webpacker/runner.rb:6:in run' from ./bin/webpack:15:in '

Done!

SSO authentication

It would be nice to have some single sign on authentication like CAS or SAML2 to add this application to an existing environment.

Broke after docker upgrade?

I've been running Snibox in a Docker Stack for a while, and it has been working great. Recently upgraded, pulled a new version of snibox docker, and now it's not working. Here is my stack file:

version: '3'

services:
  frontend:
    image: snibox/nginx-puma:1.15.9
    ports:
      - '15001:80'
    volumes:
      - '/tank_data_02/docker/snibox/app-data:/var/www/html'
      - '/tank_data_02/docker/snibox/app-config:/etc/nginx/conf.d'
    networks:
      - default
    depends_on:
      - backend

  backend:
    image: snibox/snibox:latest
    command: sh -c "rm -rf tmp/pids && ./bin/rails s -p 3000 -b '0.0.0.0'"
    environment:
      DB_NAME: sniboxdb
      DB_USER: sniboxusername
      DB_PASS: sniboxpassword
      DB_HOST: database
      DB_PORT: 5432
      FORCE_SSL: 0
      SECRET_KEY_BASE: "c3180ae9068a68262e4be714c8326db75779e2cc2aa4c89e074d3c10af867ca5c696949ac2bbfe6254d9f0e57e62316419cff0766b37e9d51511458cba8d9ba9"
    volumes:
      - '/tank_data_02/docker/snibox/app-data:/app/public'
    networks:
      - default
    depends_on:
      - database

  database:
    image: postgres:10.7-alpine
    environment:
      POSTGRES_USER: sniboxusername
      POSTGRES_PASSWORD: sniboxpassword
      POSTGRES_DB: sniboxdb
    volumes:
      - '/tank_data_02/docker/snibox/db-data:/var/lib/postgresql/data'
    networks:
      - default
      
networks:
  default:
    driver: overlay
    ipam:
      config:
        - subnet: 10.0.17.0/24

When I browse to the web, I get the follow:

We're sorry, but something went wrong.
If you are the application owner check the logs for more information.

Log file:

/app/log # cat production.logI, [2019-07-24T20:38:15.896568 #1]  INFO -- : [1c2beab0-0964-4b26-856d-aa0bae43ad2e] Started GET "/" for 10.0
.17.20 at 2019-07-24 20:38:15 +0000I, [2019-07-24T20:38:15.897380 #1]  INFO -- : [1c2beab0-0964-4b26-856d-aa0bae43ad2e] Processing by Repository
Controller#index as HTMLI, [2019-07-24T20:38:15.904096 #1]  INFO -- : [1c2beab0-0964-4b26-856d-aa0bae43ad2e] Completed 401 Unauthoriz
ed in 7msI, [2019-07-24T20:38:16.016982 #1]  INFO -- : [1ab4480f-ae1b-4936-bf03-7f71cdbe1f65] Started GET "/login" for
 10.0.17.20 at 2019-07-24 20:38:16 +0000I, [2019-07-24T20:38:16.017480 #1]  INFO -- : [1ab4480f-ae1b-4936-bf03-7f71cdbe1f65] Processing by SessionsCo
ntroller#new as HTMLI, [2019-07-24T20:38:16.094165 #1]  INFO -- : [1ab4480f-ae1b-4936-bf03-7f71cdbe1f65]   Rendering devise/sessi
ons/new.html.erb within layouts/applicationI, [2019-07-24T20:38:16.100256 #1]  INFO -- : [1ab4480f-ae1b-4936-bf03-7f71cdbe1f65]   Rendered devise/shared
/_links.html.erb (1.0ms)
I, [2019-07-24T20:38:16.100331 #1]  INFO -- : [1ab4480f-ae1b-4936-bf03-7f71cdbe1f65]   Rendered shared/_auth_form.html.erb (4.3ms)I, [2019-07-24T20:38:16.100411 #1]  INFO -- : [1ab4480f-ae1b-4936-bf03-7f71cdbe1f65]   Rendered devise/sessio
ns/new.html.erb within layouts/application (6.1ms)
I, [2019-07-24T20:38:16.102690 #1]  INFO -- : [1ab4480f-ae1b-4936-bf03-7f71cdbe1f65]   Rendered shared/_apple
_touch_icons.html.erb (1.1ms)
I, [2019-07-24T20:38:16.102872 #1]  INFO -- : [1ab4480f-ae1b-4936-bf03-7f71cdbe1f65] Completed 500 Internal S
erver Error in 85ms (ActiveRecord: 41.4ms)
F, [2019-07-24T20:38:16.103431 #1] FATAL -- : [1ab4480f-ae1b-4936-bf03-7f71cdbe1f65]
F, [2019-07-24T20:38:16.103476 #1] FATAL -- : [1ab4480f-ae1b-4936-bf03-7f71cdbe1f65] ActionView::Template::Er
ror (Webpacker can't find media/images/apple-touch-icons/apple-touch-icon.png in /app/public/packs/manifest.j
son. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
   unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker's config/webpacker.yml file.
4. Your webpack configuration is not creating a manifest.
Your manifest contains:
{
  "common.css": "/packs/common-4dee8b73.css",
  "common.css.map": "/packs/common-4dee8b73.css.map",
  "common.js": "/packs/common-401986dba63170ed9376.js",
  "common.js.map": "/packs/common-401986dba63170ed9376.js.map",
  "images/apple-touch-icons/apple-touch-icon-114x114.png": "/packs/images/apple-touch-icons/apple-touch-icon-114x114-0039bf72858b8812206b597d671af473.png",
  "images/apple-touch-icons/apple-touch-icon-120x120.png": "/packs/images/apple-touch-icons/apple-touch-icon-120x120-6c550393f7efb4ed6308f92423da86d0.png",
  "images/apple-touch-icons/apple-touch-icon-144x144.png": "/packs/images/apple-touch-icons/apple-touch-icon-144x144-2f83a9c33daf78ab1f49b6cdaeeaf0ed.png",
  "images/apple-touch-icons/apple-touch-icon-152x152.png": "/packs/images/apple-touch-icons/apple-touch-icon-152x152-ff5fc55912a6701d6331d5b368005b14.png",
  "images/apple-touch-icons/apple-touch-icon-180x180.png": "/packs/images/apple-touch-icons/apple-touch-icon-180x180-7a1b972874873a6817dbf6438b8ee724.png",
  "images/apple-touch-icons/apple-touch-icon-57x57.png": "/packs/images/apple-touch-icons/apple-touch-icon-57x57-f3ed405f811b1de171f2525f7fc6339d.png",
  "images/apple-touch-icons/apple-touch-icon-72x72.png": "/packs/images/apple-touch-icons/apple-touch-icon-72x72-8319c71d9d4a6271120187e86c435576.png",
  "images/apple-touch-icons/apple-touch-icon-76x76.png": "/packs/images/apple-touch-icons/apple-touch-icon-76x76-7439a05e81b3e8368ede13edf031a65f.png",
  "images/apple-touch-icons/apple-touch-icon.png": "/packs/images/apple-touch-icons/apple-touch-icon-f3ed405f811b1de171f2525f7fc6339d.png",
  "images/favicon.ico": "/packs/images/favicon-8d88446ecc03d86950d9743f1bd58cce.ico",
  "images/logo.png": "/packs/images/logo-1b2fb78596f1922fd8accea101b8dcee.png",
  "navbar.js": "/packs/navbar-7998a8c79d331847c7b0.js",
  "navbar.js.map": "/packs/navbar-7998a8c79d331847c7b0.js.map",
  "page.js": "/packs/page-a77d69d030ef5d3745b4.js",
  "page.js.map": "/packs/page-a77d69d030ef5d3745b4.js.map",
  "repository.js": "/packs/repository-19832d6196aeac6c6497.js",
  "repository.js.map": "/packs/repository-19832d6196aeac6c6497.js.map",
  "vendor.js": "/packs/vendor-b0910d4d1d216e7ca7a9.chunk.js",
  "vendor.js.map": "/packs/vendor-b0910d4d1d216e7ca7a9.chunk.js.map"
}
):
F, [2019-07-24T20:38:16.103593 #1] FATAL -- : [1ab4480f-ae1b-4936-bf03-7f71cdbe1f65]     1: <!-- apple touchicons -->
[1ab4480f-ae1b-4936-bf03-7f71cdbe1f65]     2: <%= tag("link", rel: "apple-touch-icon", href: asset_pack_path('media/images/apple-touch-icons/apple-touch-icon.png')) %>
[1ab4480f-ae1b-4936-bf03-7f71cdbe1f65]     3: <%= tag("link", rel: "apple-touch-icon", sizes: "57x57", href:asset_pack_path('media/images/apple-touch-icons/apple-touch-icon-57x57.png')) %>
[1ab4480f-ae1b-4936-bf03-7f71cdbe1f65]     4: <%= tag("link", rel: "apple-touch-icon", sizes: "72x72", href:asset_pack_path('media/images/apple-touch-icons/apple-touch-icon-72x72.png')) %>
[1ab4480f-ae1b-4936-bf03-7f71cdbe1f65]     5: <%= tag("link", rel: "apple-touch-icon", sizes: "76x76", href:asset_pack_path('media/images/apple-touch-icons/apple-touch-icon-76x76.png')) %>
F, [2019-07-24T20:38:16.103638 #1] FATAL -- : [1ab4480f-ae1b-4936-bf03-7f71cdbe1f65]
F, [2019-07-24T20:38:16.103700 #1] FATAL -- : [1ab4480f-ae1b-4936-bf03-7f71cdbe1f65] app/views/shared/_apple_touch_icons.html.erb:2:in `_app_views_shared__apple_touch_icons_html_erb___2557525876939293284_47174108356260'
[1ab4480f-ae1b-4936-bf03-7f71cdbe1f65] app/views/layouts/application.html.erb:9:in `_app_views_layouts_application_html_erb___612063267231846677_47174108112820'
/app/log #

I've tried running /app/bin/update, but to no avail. Any help?

Snibox-docker won't mount to host volumes.

It seems the frontend doesn't like the folders I am trying to bind mount for static_files. I've tried chmod on them and even chown, but I don't know the UID:GID this process expects to own a common static_files directory. Any ideas? Snibox will only start with the docker volumes, and won't start up at all when I try to bind mount to host volumes.

Add option to see or print parsed Markdown snippet

First of all thank you for the awesome tool.

I'm also using it to write some notes using Markdown, and I'd be happy to see option to print parsed Markdown snipped or to open it on dedicated page the same way as RAW GET /api/v1/snippets/:id/raw(.:format)

Suggestion: Allow tabs alongside spaces

Hello!

I was just checking out the demo, and it looks like it's not possible to use tabs to indent when adding a new snippet - only 2 / 4 / 8 spaces. Would it be possible to allow tabs as an option alongside 2 / 4 / 8 spaces? This would give people more choice to customise snibox to their preferences.

Search bar

Feature request for a search bar. A search bar that will dynamically show results for snips that contain the same characters. Maybe even advanced options that allow search to include body, title, and label, although default behaviour should probably search everything. Thanks!

Sharing snips

Feature request: allow snips to be shared with other users or allow them to be public.

Folders to organize snips

In addition to labels (and multiple labels per snip #5 ), it would be nice to be able to organize the snips into folders. This would also allow for nested folders so that you can keep things organized and make it easy to find. Combine this with #17 (search bar) and this app will be able to organize the snips so that anyone can arrange them however best suits them (folder tree, labels, multiple labels, etc) and it will be very easy to find everything.

Content is too long

am user docker version by snowmean/snibox-sqlite

and when i am trying to save large data in a New snippet
it says "Content is too long (maximum is 20000 characters)"
so is it sqlite limitation or snibox's?

thanks

LibSass and *.css import

Including .css files with @import is non-standard behaviour which will be removed in future versions > of LibSass.
Use a custom importer to maintain this behaviour. Check your implementations documentation on
how to create a custom importer.

Mailgun doesn't want to work

Using docker.
image

[root@sniboxdemo snibox-docker]# cat .env
# Secrets
SECRET_KEY_BASE=44f431c75e78***88f761eac4828a33

# SSL
FORCE_SSL=false

# Database # also is this self-contained, will it interfere with other containers? is this accessible from www?
DB_NAME=postgres
DB_USER=postgres
DB_PASS=
DB_HOST=database
DB_PORT=5432

# Mailgun. Required by 'Reset password feature'. Feel free to start without this setup.
MAILGUN_SMTP_PORT=587
MAILGUN_SMTP_SERVER=smtp.eu.mailgun.org
[email protected]
MAILGUN_SMTP_PASSWORD=a*****523
MAILGUN_API_KEY=fd****79c2d
MAILGUN_DOMAIN=mail.c7.ee
MAILGUN_PUBLIC_KEY=pubkey-1*****660b7

image

Multiple files per snippet

This looks nice but it has the same issue I have with GitLab snippets. It only allows for a single bit of code per snippet. I find myself needing to have multiple code pieces per "snippet" a lot of times like how GitHub's gists work.

Activate multi-users

Hello,
First of all, I must thank you for your wonderful word, you're tool is really helpful.
I know it may be dumb, but I can't find the way to activate to possibility to create multi-users in my snibox application. I couldn't find that information nor in the documentation nor in the Github.
Thank you !

Latest Docker version `relation "snippet_files" does not exist`

Hey today I noticed my snibox was all empty, and upon further inspection I noticed the following error, in the db logs.

ERROR:  relation "snippet_files" does not exist at character 566,
STATEMENT:                SELECT a.attname, format_type(a.atttypid, a.atttypmod),,
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,,
c.collname, col_description(a.attrelid, a.attnum) AS comment,
FROM pg_attribute a,
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum,
LEFT JOIN pg_type t ON a.atttypid = t.oid,
LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation,
WHERE a.attrelid = '"snippet_files"'::regclass,
AND a.attnum > 0 AND NOT a.attisdropped,
ORDER BY a.attnum

Docker image version of 2019-06-01 00:16:15

How to initialize db?

I, [2018-10-13T21:57:22.341415 #53626]  INFO -- : [5cdb2a96-a7c3-4a79-9188-476d39a54de3] Started GET "/login" for 127.0.0.1 at 2018-10-13 21:57:22 +0800
I, [2018-10-13T21:57:22.342866 #53626]  INFO -- : [5cdb2a96-a7c3-4a79-9188-476d39a54de3] Processing by SessionsController#new as HTML
I, [2018-10-13T21:57:22.374921 #53626]  INFO -- : [5cdb2a96-a7c3-4a79-9188-476d39a54de3] Completed 500 Internal Server Error in 32ms (ActiveRecord: 12.6ms)
F, [2018-10-13T21:57:22.376764 #53626] FATAL -- : [5cdb2a96-a7c3-4a79-9188-476d39a54de3]
F, [2018-10-13T21:57:22.376848 #53626] FATAL -- : [5cdb2a96-a7c3-4a79-9188-476d39a54de3] ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR:  relation "users" does not exist
LINE 8:                WHERE a.attrelid = '"users"'::regclass
                                          ^
:               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                     pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
                     c.collname, col_description(a.attrelid, a.attnum) AS comment
                FROM pg_attribute a
                LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
                LEFT JOIN pg_type t ON a.atttypid = t.oid
                LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
               WHERE a.attrelid = '"users"'::regclass
                 AND a.attnum > 0 AND NOT a.attisdropped
               ORDER BY a.attnum
):
F, [2018-10-13T21:57:22.376931 #53626] FATAL -- : [5cdb2a96-a7c3-4a79-9188-476d39a54de3]
F, [2018-10-13T21:57:22.377005 #53626] FATAL -- : [5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/connection_adapters/postgresql/database_statements.rb:63:in `async_exec'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/connection_adapters/postgresql/database_statements.rb:63:in `block (2 levels) in query'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activesupport (5.2.1) lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activesupport (5.2.1) lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activesupport (5.2.1) lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/connection_adapters/postgresql/database_statements.rb:62:in `block in query'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/connection_adapters/abstract_adapter.rb:579:in `block (2 levels) in log'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] /Users/yyc/.rbenv/versions/2.5.1/lib/ruby/2.5.0/monitor.rb:226:in `mon_synchronize'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/connection_adapters/abstract_adapter.rb:578:in `block in log'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activesupport (5.2.1) lib/active_support/notifications/instrumenter.rb:23:in `instrument'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/connection_adapters/abstract_adapter.rb:569:in `log'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/connection_adapters/postgresql/database_statements.rb:61:in `query'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/connection_adapters/postgresql_adapter.rb:749:in `column_definitions'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/connection_adapters/abstract/schema_statements.rb:113:in `columns'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/connection_adapters/schema_cache.rb:69:in `columns'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/connection_adapters/schema_cache.rb:75:in `columns_hash'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/model_schema.rb:466:in `load_schema!'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/attributes.rb:234:in `load_schema!'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/attribute_decorators.rb:51:in `load_schema!'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/model_schema.rb:459:in `block in load_schema'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] /Users/yyc/.rbenv/versions/2.5.1/lib/ruby/2.5.0/monitor.rb:226:in `mon_synchronize'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/model_schema.rb:456:in `load_schema'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/model_schema.rb:346:in `attribute_types'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/attribute_methods.rb:230:in `has_attribute?'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/inheritance.rb:55:in `new'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] devise (4.4.3) app/controllers/devise/sessions_controller.rb:11:in `new'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/abstract_controller/base.rb:194:in `process_action'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_controller/metal/rendering.rb:30:in `process_action'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activesupport (5.2.1) lib/active_support/callbacks.rb:132:in `run_callbacks'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/abstract_controller/callbacks.rb:41:in `process_action'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_controller/metal/rescue.rb:22:in `process_action'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activesupport (5.2.1) lib/active_support/notifications.rb:168:in `block in instrument'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activesupport (5.2.1) lib/active_support/notifications/instrumenter.rb:23:in `instrument'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activesupport (5.2.1) lib/active_support/notifications.rb:168:in `instrument'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_controller/metal/instrumentation.rb:32:in `process_action'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_controller/metal/params_wrapper.rb:256:in `process_action'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activerecord (5.2.1) lib/active_record/railties/controller_runtime.rb:24:in `process_action'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/abstract_controller/base.rb:134:in `process'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionview (5.2.1) lib/action_view/rendering.rb:32:in `process'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_controller/metal.rb:191:in `dispatch'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_controller/metal.rb:252:in `dispatch'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/routing/route_set.rb:52:in `dispatch'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/routing/route_set.rb:34:in `serve'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/routing/mapper.rb:18:in `block in <class:Constraints>'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/routing/mapper.rb:48:in `serve'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/journey/router.rb:52:in `block in serve'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/journey/router.rb:35:in `each'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/journey/router.rb:35:in `serve'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/routing/route_set.rb:840:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] warden (1.2.7) lib/warden/manager.rb:36:in `block in call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] warden (1.2.7) lib/warden/manager.rb:35:in `catch'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] warden (1.2.7) lib/warden/manager.rb:35:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] rack (2.0.5) lib/rack/tempfile_reaper.rb:15:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] rack (2.0.5) lib/rack/etag.rb:25:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] rack (2.0.5) lib/rack/conditional_get.rb:25:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] rack (2.0.5) lib/rack/head.rb:12:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/http/content_security_policy.rb:18:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] rack (2.0.5) lib/rack/session/abstract/id.rb:232:in `context'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] rack (2.0.5) lib/rack/session/abstract/id.rb:226:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/middleware/cookies.rb:670:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activesupport (5.2.1) lib/active_support/callbacks.rb:98:in `run_callbacks'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] railties (5.2.1) lib/rails/rack/logger.rb:38:in `call_app'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] railties (5.2.1) lib/rails/rack/logger.rb:26:in `block in call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activesupport (5.2.1) lib/active_support/tagged_logging.rb:71:in `block in tagged'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activesupport (5.2.1) lib/active_support/tagged_logging.rb:28:in `tagged'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activesupport (5.2.1) lib/active_support/tagged_logging.rb:71:in `tagged'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] railties (5.2.1) lib/rails/rack/logger.rb:26:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/middleware/request_id.rb:27:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] rack (2.0.5) lib/rack/method_override.rb:22:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] rack (2.0.5) lib/rack/runtime.rb:22:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] activesupport (5.2.1) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/middleware/executor.rb:14:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] actionpack (5.2.1) lib/action_dispatch/middleware/static.rb:127:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] rack (2.0.5) lib/rack/sendfile.rb:111:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] railties (5.2.1) lib/rails/engine.rb:524:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] puma (3.12.0) lib/puma/configuration.rb:225:in `call'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] puma (3.12.0) lib/puma/server.rb:658:in `handle_request'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] puma (3.12.0) lib/puma/server.rb:472:in `process_client'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] puma (3.12.0) lib/puma/server.rb:332:in `block in run'
[5cdb2a96-a7c3-4a79-9188-476d39a54de3] puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread'

enable cors with specified host

2018_07_24_11_16_18

I deployed snibox to machine A, I have a nginx server deployed in machine B (https://machine-b-host.com). now I want to visit snibox by request the url (https://machine-b-host.com/snibox) by using nginx proxy_pass. Now, the GET request works well, but the /login POST request cannot works. seems like the snibox backend gives me a 422 status code, cause of the default CORS rejected policy.

I want to add my host (https://machine-b-host.com) to the CORS whitelist, so let the POST request works.
So which config should edit ? Thanks.

anyone read only

I want to publish snipets on the web.
Anyone can browse contents from web browser without user ID.
Only me is registering snipet.

Provide possibility to turn off user authentication

I'm hosting Snibox locally at home, I'm the only user so there's no need for a user management or authentication. Would it be possible to provide a way (e. g. as an environment variable) to turn off user authentication? This would save me the headache of remembering and losing an unnecessary password.

Dark theme

Would be nice to have a dark theme for the web UI.

Enhancements for multiple files

After #43 will be merged.

Show/Edit pages

  • add animation for collapse
  • replace scrollIntoView to cross browser implementation (always should be smooth)
  • when user remove file wait for save confirmation before actually remove it

Rename SnippetFile model to File:

  • models
  • migrations

Serializers

  • cleanup?

Specs

  • add specs for 'editable' => active state shouldn't change when user edit snippet

Etc

  • refactoring

Is snibox listen on IPv6

Hi,
I have used Snibox for a while and am always happy with it. Thanks.
But then today I installed Snibox on an ubuntu container (means no Docker version) and redirect outside traffic on port 443 to port 3000 of the container. If traffic from IPv4 client => redirect to container's IPv4 IP, works OK. If traffic from IPv6 client => redirect to container's IPv6 IP. But nothing listen on container's IPv6.

So I want to know if Snibox listens on IPv6 too, or I missed config something?

LESS support

I see SCSS is supported as a syntax, but not LESS. Can this be added?

Highlight in Heroku newsletter

Hi 👋 @vavgustov- Just wanted to give you a heads up that I'm considering highlighting this project as Heroku's Button of the Month in our August newsletter. I'll let you know in a couple days for sure. Nice job with this project!

Adding multiple labels

Hi,

When I try to add multiple labels by separating them with a comma (,), instead of creating the one snippet and adding two labels, it creates a snippet with given label.

Example:

Title: test
Body: whatever
Labels: firstlabel, secondlabel

Expected result:
One snippet with title test under both firstlabel and secondlabel

Actual result:
One snippet with title test under firstlabel, secondlabel

Docker version doesn't work

After running setup and start, stopping and starting again I get this:

Attaching to snibox-docker_database_1, snibox-docker_backend_1, snibox-docker_frontend_1
database_1  | 2019-05-17 20:22:18.451 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
database_1  | 2019-05-17 20:22:18.451 UTC [1] LOG:  listening on IPv6 address "::", port 5432
database_1  | 2019-05-17 20:22:18.474 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
database_1  | 2019-05-17 20:22:18.528 UTC [18] LOG:  database system was shut down at 2019-05-17 20:22:07 UTC
database_1  | 2019-05-17 20:22:18.536 UTC [1] LOG:  database system is ready to accept connections

Nothing appears on 8080, 80 (nor 5432)

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.