grindstone 0.0.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +3 -0
  3. data/Rakefile +37 -0
  4. data/app/assets/javascripts/grindstone/application.js +13 -0
  5. data/app/assets/javascripts/grindstone/posts.js +2 -0
  6. data/app/controllers/grindstone/application_controller.rb +4 -0
  7. data/app/controllers/grindstone/posts_controller.rb +24 -0
  8. data/app/helpers/grindstone/application_helper.rb +4 -0
  9. data/app/models/grindstone/author.rb +6 -0
  10. data/app/models/grindstone/comment.rb +6 -0
  11. data/app/models/grindstone/post.rb +6 -0
  12. data/app/views/grindstone/posts/index.html.erb +23 -0
  13. data/app/views/grindstone/posts/partials/_comments.html.erb +8 -0
  14. data/app/views/grindstone/posts/partials/_head.html.erb +16 -0
  15. data/app/views/grindstone/posts/show.html.erb +19 -0
  16. data/app/views/layouts/grindstone/application.html.erb +14 -0
  17. data/config/initializers/rails_admin.rb +2 -0
  18. data/config/initializers/will_paginate.rb +15 -0
  19. data/config/routes.rb +5 -0
  20. data/lib/generators/grindstone/install_generator.rb +26 -0
  21. data/lib/generators/grindstone/templates/20090106022023_create_authors.erb +9 -0
  22. data/lib/generators/grindstone/templates/20090106022024_create_posts.erb +12 -0
  23. data/lib/generators/grindstone/templates/20090106022025_create_comments.erb +13 -0
  24. data/lib/generators/grindstone/templates/initializer.erb +5 -0
  25. data/lib/generators/grindstone/utils.rb +21 -0
  26. data/lib/grindstone.rb +17 -5
  27. data/lib/grindstone/engine.rb +5 -0
  28. data/lib/grindstone/version.rb +3 -0
  29. data/lib/tasks/grindstone_tasks.rake +31 -0
  30. data/test/dummy/README.rdoc +28 -0
  31. data/test/dummy/Rakefile +6 -0
  32. data/test/dummy/app/assets/javascripts/application.js +13 -0
  33. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  34. data/test/dummy/app/controllers/application_controller.rb +5 -0
  35. data/test/dummy/app/helpers/application_helper.rb +2 -0
  36. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  37. data/test/dummy/bin/bundle +3 -0
  38. data/test/dummy/bin/rails +4 -0
  39. data/test/dummy/bin/rake +4 -0
  40. data/test/dummy/bin/setup +29 -0
  41. data/test/dummy/config.ru +4 -0
  42. data/test/dummy/config/application.rb +26 -0
  43. data/test/dummy/config/boot.rb +5 -0
  44. data/test/dummy/config/database.yml +25 -0
  45. data/test/dummy/config/environment.rb +5 -0
  46. data/test/dummy/config/environments/development.rb +41 -0
  47. data/test/dummy/config/environments/production.rb +79 -0
  48. data/test/dummy/config/environments/test.rb +42 -0
  49. data/test/dummy/config/initializers/assets.rb +11 -0
  50. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  51. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  52. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  53. data/test/dummy/config/initializers/inflections.rb +16 -0
  54. data/test/dummy/config/initializers/mime_types.rb +4 -0
  55. data/test/dummy/config/initializers/session_store.rb +3 -0
  56. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  57. data/test/dummy/config/locales/en.yml +23 -0
  58. data/test/dummy/config/routes.rb +4 -0
  59. data/test/dummy/config/secrets.yml +22 -0
  60. data/test/dummy/public/404.html +67 -0
  61. data/test/dummy/public/422.html +67 -0
  62. data/test/dummy/public/500.html +66 -0
  63. data/test/dummy/public/favicon.ico +0 -0
  64. data/test/grindstone_test.rb +7 -0
  65. data/test/integration/navigation_test.rb +8 -0
  66. data/test/test_helper.rb +21 -0
  67. metadata +168 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3a8aaf7e67cbdba955931b75c8131b0036c4b047
4
- data.tar.gz: e53d0059fe464da345a18ae745b14ca74765e7d7
3
+ metadata.gz: ac486612cf1e25f2da7d0c6c43984ef454b62794
4
+ data.tar.gz: 9c1d638657fc28fcd9c731af8011028dd2f06a6c
5
5
  SHA512:
6
- metadata.gz: 8d1658efe2eed6e0928e5cf1649fb51069dc25285989db0376db4a38b382183aea9edcea00df585eb43312d28d0fdb78a1432459af5cb9398156df2e69aa5b3d
7
- data.tar.gz: 140f727b5a736e6eb3b9d3030a5587e6375d9b0699e42743dc0d2763c52b9324e8b3daf842c5c3a45e4c59eb5b29385e1e5d09e56f45282224732c9e398815b4
6
+ metadata.gz: 140e9e674e141bdc485d02818242e47a7171da1ce054d5ddac3c28b4ae718b4f8d97a45109a630d19abb306dcc091da4c0535fee0b3b052966510b2236ab908e
7
+ data.tar.gz: b1bc63fbd57321cca44134e93b6bcdc80872db07f9aefa3ba5cbfa8cf6337798526c217df5d088eb48c9095fee354b7c76475e3774ceabcf2097c435ca64c189
data/README.rdoc ADDED
@@ -0,0 +1,3 @@
1
+ = Grindstone
2
+
3
+ Please see the README.md
data/Rakefile ADDED
@@ -0,0 +1,37 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'Grindstone'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.rdoc')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
18
+ load 'rails/tasks/engine.rake'
19
+
20
+
21
+ load 'rails/tasks/statistics.rake'
22
+
23
+
24
+
25
+ Bundler::GemHelper.install_tasks
26
+
27
+ require 'rake/testtask'
28
+
29
+ Rake::TestTask.new(:test) do |t|
30
+ t.libs << 'lib'
31
+ t.libs << 'test'
32
+ t.pattern = 'test/**/*_test.rb'
33
+ t.verbose = false
34
+ end
35
+
36
+
37
+ task default: :test
@@ -0,0 +1,13 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file.
9
+ //
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require_tree .
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,4 @@
1
+ module Grindstone
2
+ class ApplicationController < ActionController::Base
3
+ end
4
+ end
@@ -0,0 +1,24 @@
1
+ class Grindstone::PostsController < ApplicationController
2
+ before_action :set_post, only: [:show]
3
+
4
+ POST = Grindstone::Post
5
+
6
+ def index
7
+ post_count = params[:post_count] || 10
8
+ begin
9
+ @posts = Grindstone::Post.paginate(:page => params[:page],
10
+ :per_page => post_count)
11
+ rescue NoMethodError
12
+ @posts = POST.all
13
+ end
14
+ end
15
+
16
+ def show
17
+ end
18
+
19
+ private
20
+
21
+ def set_post
22
+ @post = POST.find(params[:id])
23
+ end
24
+ end
@@ -0,0 +1,4 @@
1
+ module Grindstone
2
+ module ApplicationHelper
3
+ end
4
+ end
@@ -0,0 +1,6 @@
1
+ class Grindstone::Author < ActiveRecord::Base
2
+ has_many :posts,
3
+ :class_name => 'Grindstone::Post',
4
+ :primary_key => 'id',
5
+ :foreign_key => 'grindstone_author_id'
6
+ end
@@ -0,0 +1,6 @@
1
+ class Grindstone::Comment < ActiveRecord::Base
2
+ belongs_to :grindstone_post,
3
+ :class_name => 'Grindstone::Post',
4
+ :primary_key => 'id',
5
+ :foreign_key => 'grindstone_post_id'
6
+ end
@@ -0,0 +1,6 @@
1
+ class Grindstone::Post < ActiveRecord::Base
2
+ belongs_to :grindstone_author,
3
+ :class_name => 'Grindstone::Author',
4
+ :primary_key => 'id',
5
+ :foreign_key => 'grindstone_author_id'
6
+ end
@@ -0,0 +1,23 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <%= render "grindstone/posts/partials/head" %>
5
+ </head>
6
+ <body>
7
+ <div class="site-container row">
8
+ <h1><%= Grindstone.config.blog_title %></h1>
9
+ <h4><%= Grindstone.config.blog_description %></h4>
10
+ <% @posts.each do |post| %>
11
+ <h2><%= post.title %></h2>
12
+ <h3><%= post.grindstone_author.name %></h3>
13
+ <i><%= post.created_at %></i>
14
+ <div><%= post.body %></div>
15
+ <%= link_to 'Show', post %>
16
+ <% end %>
17
+
18
+ <%= will_paginate @posts, :page_links => false %>
19
+
20
+ <footer><%= Grindstone.config.blog_footer %></footer>
21
+ </div>
22
+ </body>
23
+ </html>
@@ -0,0 +1,8 @@
1
+ <form method="POST" action="">
2
+ <label for="name">Display Name</label>
3
+ <input title="name" placeholder="Display Name">
4
+ <input type="submit" class="button" value="Submit">
5
+ </form>
6
+ <div id="comments">
7
+ <%= @post['comments'] %>
8
+ </div>
@@ -0,0 +1,16 @@
1
+ <!-- Meta -->
2
+ <meta charset="utf-8">
3
+ <meta name="keywords" content="blog" />
4
+ <meta name="description" content="Blog">
5
+
6
+ <title><%= Grindstone.config.blog_title %></title>
7
+
8
+ <!-- Mobile Metas -->
9
+ <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />
10
+
11
+ <!-- Favicon -->
12
+ <link rel="shortcut icon" href="">
13
+
14
+ <!-- Styles -->
15
+ <link rel="stylesheet" type="text/css"
16
+ href="https://cdnjs.cloudflare.com/ajax/libs/foundation/6.0.1/css/foundation.min.css">
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <%= render "grindstone/posts/partials/head" %>
5
+ </head>
6
+ <body>
7
+ <div class="site-container row">
8
+ <h1><%= Grindstone.config.blog_title %></h1>
9
+ <h2><%= @post.title %></h2>
10
+ <h3><%= @post.grindstone_author.name %></h3>
11
+ <i><%= @post.created_at %></i>
12
+ <div><%= @post.body %></div>
13
+ <!-- <%= render "grindstone/posts/partials/comments" %> -->
14
+ <%= link_to 'Back', posts_path %>
15
+
16
+ <footer><%= Grindstone.config.blog_footer %></footer>
17
+ </div>
18
+ </body>
19
+ </html>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Grindstone</title>
5
+ <%= stylesheet_link_tag "grindstone/application", media: "all" %>
6
+ <%= javascript_include_tag "grindstone/application" %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>
@@ -0,0 +1,2 @@
1
+ RailsAdmin.config do |config|
2
+ end
@@ -0,0 +1,15 @@
1
+ if defined?(WillPaginate)
2
+ module WillPaginate
3
+ module ActiveRecord
4
+ module RelationMethods
5
+ def per(value = nil) per_page(value) end
6
+ def total_count() count end
7
+ def first_page?() self == first end
8
+ def last_page?() self == last end
9
+ end
10
+ end
11
+ module CollectionMethods
12
+ alias_method :num_pages, :total_pages
13
+ end
14
+ end
15
+ end
data/config/routes.rb ADDED
@@ -0,0 +1,5 @@
1
+ Grindstone::Engine.routes.draw do
2
+ mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
3
+ resources :posts
4
+ get '/', to: redirect('posts')
5
+ end
@@ -0,0 +1,26 @@
1
+ require 'rails/generators'
2
+ require File.expand_path '../utils', __FILE__
3
+
4
+ module Grindstone
5
+ class InstallGenerator < Rails::Generators::Base
6
+ source_root File.expand_path '../templates', __FILE__
7
+ include Generators::Utils::InstanceMethods
8
+
9
+ argument :_namespace, type: :string, required: false,
10
+ desc: 'Grindstone url namespace'
11
+ desc 'Creates a Grindstone initializer to your application.'
12
+
13
+ def install
14
+ namespace = ask_for 'Where do you want to mount Grindstone?', 'blog',
15
+ _namespace
16
+ route "mount Grindstone::Engine => '/#{namespace}', as: 'grindstone'"
17
+ template 'initializer.erb', 'config/initializers/grindstone.rb'
18
+ template '20090106022023_create_authors.erb',
19
+ 'db/migrate/20090106022023_create_authors.rb'
20
+ template '20090106022024_create_posts.erb',
21
+ 'db/migrate/20090106022023_create_posts.rb'
22
+ template '20090106022025_create_comments.erb',
23
+ 'db/migrate/20090106022025_create_comments.rb'
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,9 @@
1
+ class CreateAuthors < ActiveRecord::Migration
2
+ def change
3
+ create_table :grindstone_authors do |t|
4
+ t.string :name
5
+
6
+ t.timestamps null: true
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ class CreatePosts < ActiveRecord::Migration
2
+ def change
3
+ create_table :grindstone_posts do |t|
4
+ t.string :title
5
+ t.text :body
6
+
7
+ t.timestamps null: true
8
+ end
9
+ add_column :grindstone_posts, :grindstone_author_id, :integer
10
+ add_foreign_key :grindstone_posts, :grindstone_authors
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ class CreateComments < ActiveRecord::Migration
2
+ def change
3
+ create_table :grindstone_comments do |t|
4
+ t.string :title
5
+ t.string :username
6
+ t.text :body
7
+
8
+ t.timestamps null: true
9
+ end
10
+ add_column :grindstone_comments, :grindstone_post_id, :integer
11
+ add_foreign_key :grindstone_comments, :grindstone_posts
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ Grindstone.config { |c|
2
+ c.blog_title = 'Test'
3
+ c.blog_description = 'Some Description'
4
+ c.blog_footer = 'Some Footer'
5
+ }
@@ -0,0 +1,21 @@
1
+ # Replicated from rails_admin gem
2
+
3
+ module Grindstone
4
+ module Generators
5
+ module Utils
6
+ module InstanceMethods
7
+ def display(output, color = :green)
8
+ say(" - #{output}", color)
9
+ end
10
+
11
+ def ask_for(wording, default_value = nil, override_if_present_value = nil)
12
+ if override_if_present_value.present?
13
+ display("Using [#{override_if_present_value}] for question '#{wording}'") && override_if_present_value
14
+ else
15
+ ask(" ? #{wording} Press <enter> for [#{default_value}] >", :yellow).presence || default_value
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
data/lib/grindstone.rb CHANGED
@@ -1,7 +1,19 @@
1
- #!/usr/bin/env ruby
1
+ require 'grindstone/engine'
2
2
 
3
- class Grindstone
4
- def self.hi
5
- puts "Hello world!"
3
+ module Grindstone
4
+ class Config
5
+ attr_accessor :blog_title, :blog_description, :blog_footer
6
6
  end
7
- end
7
+
8
+ def self.config
9
+ unless @grindstone_config
10
+ @grindstone_config = Config.new
11
+ end
12
+
13
+ yield @grindstone_config if block_given?
14
+ @grindstone_config
15
+ end
16
+
17
+ private
18
+ @grindstone_config = nil
19
+ end
@@ -0,0 +1,5 @@
1
+ module Grindstone
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace Grindstone
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ module Grindstone
2
+ VERSION = '0.0.2'
3
+ end
@@ -0,0 +1,31 @@
1
+ require 'fileutils'
2
+
3
+ namespace :grindstone do
4
+ desc "Create Grindstone migrations"
5
+ task :create_migrations do
6
+
7
+ # Get the Grindstone dir
8
+ spec = Gem::Specification.find_by_name 'grindstone'
9
+
10
+ # Set the destination
11
+ dest_dir = "#{Rails.root}/db/migrate"
12
+
13
+ unless File.directory?(dest_dir)
14
+ FileUtils.mkdir_p(dest_dir)
15
+ end
16
+
17
+ # Read the source
18
+ Dir.glob("#{spec.gem_dir}/db/migrate/*.rb").each do |migration|
19
+ filename = migration.split('/').last
20
+ filepath = "#{dest_dir}/#{filename}"
21
+
22
+ puts migration, filepath
23
+
24
+ # Copy the file
25
+ File.open(filepath, 'w')
26
+ FileUtils::cp migration, filepath, :verbose => true
27
+ end
28
+
29
+ puts 'Grindstone: Copied Migrations'
30
+ end
31
+ end
@@ -0,0 +1,28 @@
1
+ == README
2
+
3
+ This README would normally document whatever steps are necessary to get the
4
+ application up and running.
5
+
6
+ Things you may want to cover:
7
+
8
+ * Ruby version
9
+
10
+ * System dependencies
11
+
12
+ * Configuration
13
+
14
+ * Database creation
15
+
16
+ * Database initialization
17
+
18
+ * How to run the test suite
19
+
20
+ * Services (job queues, cache servers, search engines, etc.)
21
+
22
+ * Deployment instructions
23
+
24
+ * ...
25
+
26
+
27
+ Please feel free to use a different markup language if you do not plan to run
28
+ <tt>rake doc:app</tt>.