This repository was archived by the owner on May 4, 2020. It is now read-only.

Repository files navigation

Ania - A Rails/SQL migration checker

Rails migrations are great, but in a busy production environment sometimes you need to run raw SQL so you don't have to take the app down to migrate large tables. This means you then need to maintain two sets of migrations; one Rails version to use in development or any integration testing environments and an SQL version to use in production. As soon as you have two versions then you have the problem of keeping them in sync and ensuring they're changing your database in the same way each time. This gem helps with this.

Installation

Add this line to your Rails application's Gemfile:

gem'migration_checker'

And then execute:

$ bundle

Usage

The easiest way to use this gem is with the rake task the gem provides:

rake db:check_migration

By default, this will check the most recent migration. You can also specify the migration version to check with the VERSION environment variable:

rake db:check_migration VERSION=20160319134129

For this gem to work your migrations need to have a particular format. The SQL migration should be included in the same file after the __END__ keyword. The up migration should come first, followed by the down migration with them both titled in uppercase (UP and DOWN respectively). For example:

classCreatePosts < ActiveRecord::Migrationdefchangecreate_table:postsdo |t|
t.belongs_to:author,null: falset.string:title,null: falset.string:slug,limit: 32t.text:content,null: falset.timestampsnull: falseendadd_foreign_key:posts,:authors,name: :author_id_fkendend
__END__
-- ======
-- = UP =
-- ======
CREATE TABLE `posts` (
`id` int(11) auto_increment PRIMARY KEY,
`author_id` int(11) NOT NULL,
`title` varchar(255) NOT NULL COLLATE utf8_unicode_ci,
`slug` varchar(32) COLLATE utf8_unicode_ci,
`content` text NOT NULL COLLATE utf8_unicode_ci,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `posts` ADD CONSTRAINT `author_id_fk` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`);
INSERT INTO `schema_migrations` (`version`) VALUES ('20160309103833');
-- ========
-- = DOWN =
-- ========
DROP TABLE `posts`;
DELETE FROM `schema_migrations` WHERE `schema_migrations`.`version` = '20160309103833';

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rspec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/fac/ania.

About

Removing the ache of keeping Rails and SQL migrations in sync to prevent anguish

Resources

Stars

0 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on May 4, 2020. It is now read-only.

Repository files navigation

Ania - A Rails/SQL migration checker

Rails migrations are great, but in a busy production environment sometimes you need to run raw SQL so you don't have to take the app down to migrate large tables. This means you then need to maintain two sets of migrations; one Rails version to use in development or any integration testing environments and an SQL version to use in production. As soon as you have two versions then you have the problem of keeping them in sync and ensuring they're changing your database in the same way each time. This gem helps with this.

Installation

Add this line to your Rails application's Gemfile:

gem'migration_checker'

And then execute:

$ bundle

Usage

The easiest way to use this gem is with the rake task the gem provides:

rake db:check_migration

By default, this will check the most recent migration. You can also specify the migration version to check with the VERSION environment variable:

rake db:check_migration VERSION=20160319134129

For this gem to work your migrations need to have a particular format. The SQL migration should be included in the same file after the __END__ keyword. The up migration should come first, followed by the down migration with them both titled in uppercase (UP and DOWN respectively). For example:

classCreatePosts < ActiveRecord::Migrationdefchangecreate_table:postsdo |t|
t.belongs_to:author,null: falset.string:title,null: falset.string:slug,limit: 32t.text:content,null: falset.timestampsnull: falseendadd_foreign_key:posts,:authors,name: :author_id_fkendend
__END__
-- ======
-- = UP =
-- ======
CREATE TABLE `posts` (
`id` int(11) auto_increment PRIMARY KEY,
`author_id` int(11) NOT NULL,
`title` varchar(255) NOT NULL COLLATE utf8_unicode_ci,
`slug` varchar(32) COLLATE utf8_unicode_ci,
`content` text NOT NULL COLLATE utf8_unicode_ci,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `posts` ADD CONSTRAINT `author_id_fk` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`);
INSERT INTO `schema_migrations` (`version`) VALUES ('20160309103833');
-- ========
-- = DOWN =
-- ========
DROP TABLE `posts`;
DELETE FROM `schema_migrations` WHERE `schema_migrations`.`version` = '20160309103833';

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rspec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/fac/ania.

About

Removing the ache of keeping Rails and SQL migrations in sync to prevent anguish

Resources

Stars

0 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on May 4, 2020. It is now read-only.

Repository files navigation

Ania - A Rails/SQL migration checker

Rails migrations are great, but in a busy production environment sometimes you need to run raw SQL so you don't have to take the app down to migrate large tables. This means you then need to maintain two sets of migrations; one Rails version to use in development or any integration testing environments and an SQL version to use in production. As soon as you have two versions then you have the problem of keeping them in sync and ensuring they're changing your database in the same way each time. This gem helps with this.

Installation

Add this line to your Rails application's Gemfile:

gem'migration_checker'

And then execute:

$ bundle

Usage

The easiest way to use this gem is with the rake task the gem provides:

rake db:check_migration

By default, this will check the most recent migration. You can also specify the migration version to check with the VERSION environment variable:

rake db:check_migration VERSION=20160319134129

For this gem to work your migrations need to have a particular format. The SQL migration should be included in the same file after the __END__ keyword. The up migration should come first, followed by the down migration with them both titled in uppercase (UP and DOWN respectively). For example:

classCreatePosts < ActiveRecord::Migrationdefchangecreate_table:postsdo |t|
t.belongs_to:author,null: falset.string:title,null: falset.string:slug,limit: 32t.text:content,null: falset.timestampsnull: falseendadd_foreign_key:posts,:authors,name: :author_id_fkendend
__END__
-- ======
-- = UP =
-- ======
CREATE TABLE `posts` (
`id` int(11) auto_increment PRIMARY KEY,
`author_id` int(11) NOT NULL,
`title` varchar(255) NOT NULL COLLATE utf8_unicode_ci,
`slug` varchar(32) COLLATE utf8_unicode_ci,
`content` text NOT NULL COLLATE utf8_unicode_ci,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `posts` ADD CONSTRAINT `author_id_fk` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`);
INSERT INTO `schema_migrations` (`version`) VALUES ('20160309103833');
-- ========
-- = DOWN =
-- ========
DROP TABLE `posts`;
DELETE FROM `schema_migrations` WHERE `schema_migrations`.`version` = '20160309103833';

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rspec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/fac/ania.

About

Removing the ache of keeping Rails and SQL migrations in sync to prevent anguish

Resources

Stars

0 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on May 4, 2020. It is now read-only.

Repository files navigation

Ania - A Rails/SQL migration checker

Rails migrations are great, but in a busy production environment sometimes you need to run raw SQL so you don't have to take the app down to migrate large tables. This means you then need to maintain two sets of migrations; one Rails version to use in development or any integration testing environments and an SQL version to use in production. As soon as you have two versions then you have the problem of keeping them in sync and ensuring they're changing your database in the same way each time. This gem helps with this.

Installation

Add this line to your Rails application's Gemfile:

gem'migration_checker'

And then execute:

$ bundle

Usage

The easiest way to use this gem is with the rake task the gem provides:

rake db:check_migration

By default, this will check the most recent migration. You can also specify the migration version to check with the VERSION environment variable:

rake db:check_migration VERSION=20160319134129

For this gem to work your migrations need to have a particular format. The SQL migration should be included in the same file after the __END__ keyword. The up migration should come first, followed by the down migration with them both titled in uppercase (UP and DOWN respectively). For example:

classCreatePosts < ActiveRecord::Migrationdefchangecreate_table:postsdo |t|
t.belongs_to:author,null: falset.string:title,null: falset.string:slug,limit: 32t.text:content,null: falset.timestampsnull: falseendadd_foreign_key:posts,:authors,name: :author_id_fkendend
__END__
-- ======
-- = UP =
-- ======
CREATE TABLE `posts` (
`id` int(11) auto_increment PRIMARY KEY,
`author_id` int(11) NOT NULL,
`title` varchar(255) NOT NULL COLLATE utf8_unicode_ci,
`slug` varchar(32) COLLATE utf8_unicode_ci,
`content` text NOT NULL COLLATE utf8_unicode_ci,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `posts` ADD CONSTRAINT `author_id_fk` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`);
INSERT INTO `schema_migrations` (`version`) VALUES ('20160309103833');
-- ========
-- = DOWN =
-- ========
DROP TABLE `posts`;
DELETE FROM `schema_migrations` WHERE `schema_migrations`.`version` = '20160309103833';

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rspec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/fac/ania.

About

Removing the ache of keeping Rails and SQL migrations in sync to prevent anguish

Resources

Stars

0 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on May 4, 2020. It is now read-only.

Repository files navigation

Ania - A Rails/SQL migration checker

Rails migrations are great, but in a busy production environment sometimes you need to run raw SQL so you don't have to take the app down to migrate large tables. This means you then need to maintain two sets of migrations; one Rails version to use in development or any integration testing environments and an SQL version to use in production. As soon as you have two versions then you have the problem of keeping them in sync and ensuring they're changing your database in the same way each time. This gem helps with this.

Installation

Add this line to your Rails application's Gemfile:

gem'migration_checker'

And then execute:

$ bundle

Usage

The easiest way to use this gem is with the rake task the gem provides:

rake db:check_migration

By default, this will check the most recent migration. You can also specify the migration version to check with the VERSION environment variable:

rake db:check_migration VERSION=20160319134129

For this gem to work your migrations need to have a particular format. The SQL migration should be included in the same file after the __END__ keyword. The up migration should come first, followed by the down migration with them both titled in uppercase (UP and DOWN respectively). For example:

classCreatePosts < ActiveRecord::Migrationdefchangecreate_table:postsdo |t|
t.belongs_to:author,null: falset.string:title,null: falset.string:slug,limit: 32t.text:content,null: falset.timestampsnull: falseendadd_foreign_key:posts,:authors,name: :author_id_fkendend
__END__
-- ======
-- = UP =
-- ======
CREATE TABLE `posts` (
`id` int(11) auto_increment PRIMARY KEY,
`author_id` int(11) NOT NULL,
`title` varchar(255) NOT NULL COLLATE utf8_unicode_ci,
`slug` varchar(32) COLLATE utf8_unicode_ci,
`content` text NOT NULL COLLATE utf8_unicode_ci,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `posts` ADD CONSTRAINT `author_id_fk` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`);
INSERT INTO `schema_migrations` (`version`) VALUES ('20160309103833');
-- ========
-- = DOWN =
-- ========
DROP TABLE `posts`;
DELETE FROM `schema_migrations` WHERE `schema_migrations`.`version` = '20160309103833';

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rspec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/fac/ania.

About

Removing the ache of keeping Rails and SQL migrations in sync to prevent anguish

Resources

Stars

0 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on May 4, 2020. It is now read-only.

Repository files navigation

Ania - A Rails/SQL migration checker

Rails migrations are great, but in a busy production environment sometimes you need to run raw SQL so you don't have to take the app down to migrate large tables. This means you then need to maintain two sets of migrations; one Rails version to use in development or any integration testing environments and an SQL version to use in production. As soon as you have two versions then you have the problem of keeping them in sync and ensuring they're changing your database in the same way each time. This gem helps with this.

Installation

Add this line to your Rails application's Gemfile:

gem'migration_checker'

And then execute:

$ bundle

Usage

The easiest way to use this gem is with the rake task the gem provides:

rake db:check_migration

By default, this will check the most recent migration. You can also specify the migration version to check with the VERSION environment variable:

rake db:check_migration VERSION=20160319134129

For this gem to work your migrations need to have a particular format. The SQL migration should be included in the same file after the __END__ keyword. The up migration should come first, followed by the down migration with them both titled in uppercase (UP and DOWN respectively). For example:

classCreatePosts < ActiveRecord::Migrationdefchangecreate_table:postsdo |t|
t.belongs_to:author,null: falset.string:title,null: falset.string:slug,limit: 32t.text:content,null: falset.timestampsnull: falseendadd_foreign_key:posts,:authors,name: :author_id_fkendend
__END__
-- ======
-- = UP =
-- ======
CREATE TABLE `posts` (
`id` int(11) auto_increment PRIMARY KEY,
`author_id` int(11) NOT NULL,
`title` varchar(255) NOT NULL COLLATE utf8_unicode_ci,
`slug` varchar(32) COLLATE utf8_unicode_ci,
`content` text NOT NULL COLLATE utf8_unicode_ci,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `posts` ADD CONSTRAINT `author_id_fk` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`);
INSERT INTO `schema_migrations` (`version`) VALUES ('20160309103833');
-- ========
-- = DOWN =
-- ========
DROP TABLE `posts`;
DELETE FROM `schema_migrations` WHERE `schema_migrations`.`version` = '20160309103833';

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rspec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/fac/ania.

About

Removing the ache of keeping Rails and SQL migrations in sync to prevent anguish

Resources

Stars

0 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on May 4, 2020. It is now read-only.

Repository files navigation

Ania - A Rails/SQL migration checker

Rails migrations are great, but in a busy production environment sometimes you need to run raw SQL so you don't have to take the app down to migrate large tables. This means you then need to maintain two sets of migrations; one Rails version to use in development or any integration testing environments and an SQL version to use in production. As soon as you have two versions then you have the problem of keeping them in sync and ensuring they're changing your database in the same way each time. This gem helps with this.

Installation

Add this line to your Rails application's Gemfile:

gem'migration_checker'

And then execute:

$ bundle

Usage

The easiest way to use this gem is with the rake task the gem provides:

rake db:check_migration

By default, this will check the most recent migration. You can also specify the migration version to check with the VERSION environment variable:

rake db:check_migration VERSION=20160319134129

For this gem to work your migrations need to have a particular format. The SQL migration should be included in the same file after the __END__ keyword. The up migration should come first, followed by the down migration with them both titled in uppercase (UP and DOWN respectively). For example:

classCreatePosts < ActiveRecord::Migrationdefchangecreate_table:postsdo |t|
t.belongs_to:author,null: falset.string:title,null: falset.string:slug,limit: 32t.text:content,null: falset.timestampsnull: falseendadd_foreign_key:posts,:authors,name: :author_id_fkendend
__END__
-- ======
-- = UP =
-- ======
CREATE TABLE `posts` (
`id` int(11) auto_increment PRIMARY KEY,
`author_id` int(11) NOT NULL,
`title` varchar(255) NOT NULL COLLATE utf8_unicode_ci,
`slug` varchar(32) COLLATE utf8_unicode_ci,
`content` text NOT NULL COLLATE utf8_unicode_ci,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `posts` ADD CONSTRAINT `author_id_fk` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`);
INSERT INTO `schema_migrations` (`version`) VALUES ('20160309103833');
-- ========
-- = DOWN =
-- ========
DROP TABLE `posts`;
DELETE FROM `schema_migrations` WHERE `schema_migrations`.`version` = '20160309103833';

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rspec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/fac/ania.

About

Removing the ache of keeping Rails and SQL migrations in sync to prevent anguish

Resources

Stars

0 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on May 4, 2020. It is now read-only.

Repository files navigation

Ania - A Rails/SQL migration checker

Rails migrations are great, but in a busy production environment sometimes you need to run raw SQL so you don't have to take the app down to migrate large tables. This means you then need to maintain two sets of migrations; one Rails version to use in development or any integration testing environments and an SQL version to use in production. As soon as you have two versions then you have the problem of keeping them in sync and ensuring they're changing your database in the same way each time. This gem helps with this.

Installation

Add this line to your Rails application's Gemfile:

gem'migration_checker'

And then execute:

$ bundle

Usage

The easiest way to use this gem is with the rake task the gem provides:

rake db:check_migration

By default, this will check the most recent migration. You can also specify the migration version to check with the VERSION environment variable:

rake db:check_migration VERSION=20160319134129

For this gem to work your migrations need to have a particular format. The SQL migration should be included in the same file after the __END__ keyword. The up migration should come first, followed by the down migration with them both titled in uppercase (UP and DOWN respectively). For example:

classCreatePosts < ActiveRecord::Migrationdefchangecreate_table:postsdo |t|
t.belongs_to:author,null: falset.string:title,null: falset.string:slug,limit: 32t.text:content,null: falset.timestampsnull: falseendadd_foreign_key:posts,:authors,name: :author_id_fkendend
__END__
-- ======
-- = UP =
-- ======
CREATE TABLE `posts` (
`id` int(11) auto_increment PRIMARY KEY,
`author_id` int(11) NOT NULL,
`title` varchar(255) NOT NULL COLLATE utf8_unicode_ci,
`slug` varchar(32) COLLATE utf8_unicode_ci,
`content` text NOT NULL COLLATE utf8_unicode_ci,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `posts` ADD CONSTRAINT `author_id_fk` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`);
INSERT INTO `schema_migrations` (`version`) VALUES ('20160309103833');
-- ========
-- = DOWN =
-- ========
DROP TABLE `posts`;
DELETE FROM `schema_migrations` WHERE `schema_migrations`.`version` = '20160309103833';

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rspec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/fac/ania.

About

Removing the ache of keeping Rails and SQL migrations in sync to prevent anguish

Resources

Stars

0 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages