Skip to content

texpert/florsan

Folders and files

NameName
Last commit message
Last commit date
Mar 3, 2025
Aug 5, 2024
Dec 8, 2024
Feb 25, 2025
Jun 2, 2020
Dec 8, 2024
Aug 11, 2018
Dec 8, 2024
Oct 1, 2020
Aug 11, 2018
Jun 12, 2024
Apr 30, 2024
Mar 20, 2025
Oct 2, 2020
Nov 12, 2023
Mar 3, 2025
Apr 30, 2024
Feb 25, 2025
Mar 21, 2025
Nov 11, 2022
Mar 3, 2025
Oct 1, 2020
Aug 4, 2021
Dec 13, 2020
Apr 22, 2022
Dec 8, 2024
Apr 30, 2024
Mar 17, 2025
Mar 19, 2025

Repository files navigation

Maintainability

README

  • Ruby version: 3.4.1

  • Rails version: 8.0.1

  • Only for running ESLint and stylelint

    • Node JS (used only for running ESLint and stylelint) version: 22.14.0
    • Yarn 4.7.0
  • System dependencies

  • Configuration

💡 Note: Multi environment credentials

To edit the credentials file, run EDITOR="nano" rails credentials:edit. This command will create the credentials file the config/master.key if there is no such file, and, also, the config/credentials.yml.encif it does not exist.

The master.key should be provisioned to the Rails app as the RAILS_MASTER_KEY environment variable by the hosting platform (Heroku).

Other credentials, including the secret_key_base, are typically stored in the encrypted files per environment in the config/credentials folder. These encrypted files could be edited, running in the terminal the following command:

$ EDITOR="nano" rails credentials:edit --environment=development
  • Database creation

  • Database initialization

  • How to run the test suite

  • Services (job queues, cache servers, search engines, etc.)

  • Deployment instructions: git push heroku main or git push heroku branchname:main

TODO: remove public read access

AWS bucket policy is public read until [the issue in Camaleon CMS will get solved](https://github. com/owen2345/camaleon-cms/issues/955)

Current bucket policy:

{
    "Version": "2012-10-17",
    "Id": "Policy1590871751896",
    "Statement": [
        {
            "Sid": "Stmt1590871689636",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::Account-ID:user/username"
            },
            "Action": [
                "s3:DeleteObject",
                "s3:DeleteObjectTagging",
                "s3:DeleteObjectVersion",
                "s3:DeleteObjectVersionTagging",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:GetObjectVersion",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectVersionForReplication",
                "s3:GetObjectVersionTagging",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:ListBucketVersions",
                "s3:ListMultipartUploadParts",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectTagging",
                "s3:PutObjectVersionAcl",
                "s3:PutObjectVersionTagging",
                "s3:PutReplicationConfiguration",
                "s3:ReplicateDelete",
                "s3:ReplicateObject",
                "s3:ReplicateTags",
                "s3:RestoreObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucketname",
                "arn:aws:s3:::bucketname/*"
            ]
        },
        {
            "Sid": "Stmt1590871689636",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucketname/*"
        }
    ]
}

Testing and profiling

The derailed_benchmarks gem is running performance test in production environment, so the production DB in the config/database.yml is pointing to the development DB.

The following specs could be run:

Static memory reports:

bundle exec derailed bundle:mem # Memory used at Require time

bundle exec derailed bundle:mem development # Memory used at Require time in `development` environment

bundle exec derailed bundle:objects # Objects created at Require time

bundle exec derailed bundle:objects development # Objects created at Require time in `development` environment

Dynamic profiling

$ bundle exec derailed exec --help
  $ derailed exec perf:allocated_objects  # outputs allocated object diff after app is called TEST_COUNT times
  $ derailed exec perf:app  # runs the performance test against two most recent commits of the current app
  $ derailed exec perf:gc  # outputs GC::Profiler.report data while app is called TEST_COUNT times
  $ derailed exec perf:heap  # heap analyzer
  $ derailed exec perf:ips  # iterations per second
  $ derailed exec perf:library  # runs the same test against two different branches for statistical comparison
  $ derailed exec perf:mem  # show memory usage caused by invoking require per gem
  $ derailed exec perf:mem_over_time  # outputs memory usage over time
  $ derailed exec perf:objects  # profiles ruby allocation
  $ derailed exec perf:stackprof  # stackprof
  $ derailed exec perf:test  # hits the url TEST_COUNT times
  $ derailed exec perf:heap_diff  # three heaps generation for comparison

ESLint

Run the following command:

yarn eslint

Stylelint

Run the following command:

yarn stylelint "**/*.{css,js,scss}"