aboutsummaryrefslogtreecommitdiffstats
path: root/railties/guides/source
diff options
context:
space:
mode:
authorVijay Dev <vijaydev.cse@gmail.com>2012-03-08 23:36:46 +0530
committerVijay Dev <vijaydev.cse@gmail.com>2012-03-08 23:54:55 +0530
commit97e7d43146b6edca19891d8c7ed6b4d93e7dad00 (patch)
treee130d998300891e026fa740fe24faea907d10089 /railties/guides/source
parent35922c0f82cec8f0094d56838c8ecd2ae989f109 (diff)
downloadrails-97e7d43146b6edca19891d8c7ed6b4d93e7dad00.tar.gz
rails-97e7d43146b6edca19891d8c7ed6b4d93e7dad00.tar.bz2
rails-97e7d43146b6edca19891d8c7ed6b4d93e7dad00.zip
Revert "Add rails glossary of common terms & concepts"
This reverts commit fd584a63deb8d2f1e8969d8527e7a9dbd9d68848. Reason: This is not suitable for a Rails guide in my opinion.
Diffstat (limited to 'railties/guides/source')
-rw-r--r--railties/guides/source/credits.html.erb4
-rw-r--r--railties/guides/source/glossary.textile424
2 files changed, 0 insertions, 428 deletions
diff --git a/railties/guides/source/credits.html.erb b/railties/guides/source/credits.html.erb
index 00cf765b77..da6bd6acdf 100644
--- a/railties/guides/source/credits.html.erb
+++ b/railties/guides/source/credits.html.erb
@@ -70,7 +70,3 @@ Ryan Bigg works as a consultant at <a href="http://rubyx.com">RubyX</a> and has
<%= author('Heiko Webers', 'hawe') do %>
Heiko Webers is the founder of <a href="http://www.bauland42.de">bauland42</a>, a German web application security consulting and development company focused on Ruby on Rails. He blogs at the <a href="http://www.rorsecurity.info">Ruby on Rails Security Project</a>. After 10 years of desktop application development, Heiko has rarely looked back.
<% end %>
-
-<%= author('Adam Hawkins', 'adman65') do %>
- Ruby developer and founder of <a href="http://threadedlabs.com">ThreadedLabs</a> a modern web shop. You can read his blog at <a href="http://broadcastingadam.com">Broadcasting Adam</a>
-<% end %>
diff --git a/railties/guides/source/glossary.textile b/railties/guides/source/glossary.textile
deleted file mode 100644
index 099a35bc52..0000000000
--- a/railties/guides/source/glossary.textile
+++ /dev/null
@@ -1,424 +0,0 @@
-h2. Rails Glossary
-
-This is a beginner guide to common terms, projects, and things you will come across when
-working with Rails. The glossary is here to provide you introductory material on each
-topic so you can learn more. When you come across a topic you're not familiar with,
-you can check here.
-
-endprologue.
-
-h3. Acceptance Testing
-
-Acceptancing testing is the act of testing use cases. Test cases are written
-in a way that describes a use case. Then a test case is passing it can be
-accepted. Cucumber is a good tool for acceptance testings. Work with your
-stake holder to develop tests that represent use cases. When the test is
-complete the feature should be accepted. Acceptance testing is focused
-around people outside the code development accepting features.
-
-h3. Application Servers: Thin, Passenger, Unicorn
-
-These are all application servers. They interact with your Ruby code
-and respond to requests. They are integrated with web servers like Nginx
-or Apache to server you application on the internet. Some also serve
-the application by itself. You can +rackup+ a rack app and serve it with
-Thin right away.
-
-h3. Assets
-
-Assets are static files that are part of your application. They include: images, sytlesheets, scripts, or fonts.
-Essentially, anything that needs to be server with your code for your app to run is
-an asset. The asset pipeline gives you an easy way to manage all the different files.
-
-h3. Authentication
-
-Authentication is the process of matching credentials to a person and
-verifying them. Authentication is purely about identifiying who the
-user is–and not what they can do.
-"Sorcery":https://github.com/NoamB/sorcery is an example of an authentication library.
-
-h3. Authorization
-
-Authorization is the process for determine what a specific user can do.
-Authorization usually involves permission or role based systems.
-"CanCan":https://github.com/ryanb/cancan is an example of an authorization library.
-
-h3. Behavior Driven Development (BDD)
-
-Is essentially the same as TDD except using a different set of tools
-to express code in terms of user facing behavior.
-"Rspec":https://github.com/rspec/rspec and "Cucumber":https://github.com/cucumber/cucumber are part of the BDD toolbox.
-
-h3. Bundler
-
-Bundler reads a Gemfile and calculates a set of version requirements
-to make all the specified gems live happily together. It will prevent
-version conflicts and infamous ‘gem already activated error’. It allows
-you to install git gems or standard gems from rubygems.org. It does
-not require libraries, it simply makes them available. It is up to you
-require them in your programs. However, Rails will automatically setup bundler when your application boots.
-
-h3. Capistrano
-
-Capistrano is a tool for executing command one groups of remote
-(or local) serves over SSH. It is primary used to deploy
-Ruby (on Rails) applications. It has support for multistage environments.
-Example, staging and production. You can easily write your own
-tasks similar to writing rake task. It is the preferred way deploy Rails applications.
-
-h3. Capybara
-
-Capybara is a gem designed to provide an abstraction layer between
-different browser drivers. It is primarily used in integration testing
-to interact with the web server. It provides an API to navigate between
-pages, click buttons, fill in forms, and other user interactions. It has
-adapters for many different browser drivers. Notable drivers include
-Selenium, rack-test and webrat. It is primary used in acceptance testing.
-
-h3. CoffeeScript
-
-CoffeeScript is a JavaScript superset. It aims to solves some problems
-with JavaScript. It has some syntatical sugar around creating colsures and
-objects. It supports for splat arguments. CoffeeScript files are compiled
-into JavaScript files. CoffeeScript is usually called CS. You'll often see
-CS/JS in reference to CoffeeScript and Javascript.
-
-h3. Compass
-
-Compass is a library built around SASS abstractions. It provides mixins
-for many common things like styling buttons and forms. It is also easy
-to extend and comes with many built in functions. The blueprint CSS
-framework is bundled by default.
-
-h3. Cucumber
-
-Cucumber is a test framework for creating plain english acceptance
-tests. The tests can be executed automatically. Cucumber is used for
-integration testing web applications. The test suite is often used in CI
-(Continuous Integration). Cucumber uses a language called Gherkin to
-parse files into lines and match them against regular expressions.
-Regular expressions are matched with code blocks. Your test code lives
-in these blocks.
-
-Cucumber tests are divided up into "Feature" files. Each feature has
-many "scenarios." Features are like use cases. Scenarios are different
-permutations of that use case. Here is an example Feature file:
-
-<pre>
-Feature: Make Widthdrawls from Accounts
- As an account holder
- I want to use my money
- In order to use it buy thing
-
- Background:
- Given I have account under "RubyX"
- And my account is activated
-
- Scenario: There is enough money in my account
- Given my account has "$1,000"
- And I'm at the bank
- When I widthdraw "$500"
- Then my account should have "$500"
-
- Scenario: There is not enough money in my account
- Given my account has "$1,000"
- And I'm at the bank
- When I widthdraw "$500"
- Then the teller should reject my transaction
-</pre>
-
-Here is an example step definition:
-
-<ruby>
-Given /I'm at the bank/ do
- # set up pre conditions
-end
-
-Then /the teller should reject my transaction/ do
- # assert on things
-end
-</ruby>
-
-h3. DSL
-
-DSL stands for Domain Specific Language. They are crafted to solve one
-or more problems very eloquently and nothing more. For example, a DSL
-created to declare work order would be horrible suited for writing
-Photoshop. DSLs are usually wrappers around more complicated methods
-that make it easier to express the intent of the underlying code from
-a programmer's perspective. You may have used a DSL before and
-not realized it. Here is an example from Sunspot's search
-functionality. It's designed for describing a search and nothing more:
-
-<ruby>
-Post.search do
- fulltext 'best pizza'
- with :blog_id, 1
- with(:published_at).less_than Time.now
- order_by :published_at, :desc
- paginate :page => 2, :per_page => 15
- facet :category_ids, :author_id
-end
-</ruby>
-
-h3. ERB
-
-ERB is Embedded Ruby. ERB is built into the Ruby core. It allows to to
-place Ruby inside other files. For example, placing Ruby inside HTML.
-Here is an example:
-
-<erb>
-<div class="<%= @ticket.state %>"
- <p><%= @ticket.message %></p>
-</div>
-</erb>
-
-h3. Factories - FactoryGirl & Fabrication
-
-These are two popular libraries for creating object factories. They are
-usually used in test suites and population scripts. They provide a
-default set of attributes and allow programmers to specify the
-attributes they care about at creation time. Factories are commonly used
-to replace fixtures.
-
-h3. Fixtures
-
-Fixtures are static objects used in test cases. You may have a fixtures for specific
-test cases to build up needed preconditions. Fixtures are commonly used to represent
-data in a table. Fixtures are stored in YML and are loaded by a test library.
-Fixtures become hard to main at scale. They are often replaced with Factories because
-it's easier to generate an object at runtime then maintain a static file with its
-attributes.
-
-h3. Gem
-
-A gem is a resuable library of Ruby code. Gems are hosted on "RubyGems":http://rubygems.org.
-They are managed with the +gem+ command or with bundler. Rails is
-distributed as a gem.
-
-h3. Git
-
-Git is a distributed version control system. Each user has a complete
-copy of the repository. Changes can be pushed back to the remote
-repositories for others to pull or push from. Linus Torvalds created Git
-because he was unsatisfied with other version control systems like CVS
-or SVN. Do not get GitHub confused with Git. GitHub is simply a service
-for hosting the main Git repository. You can use git independent of
-github, however most Ruby developers use github exclusively.
-
-h3. HAML
-
-HAML is an HTML abstraction language. It's great for structuring
-documents and horrible to content. It will autoclose tags and lets you
-specify attributes as a hash. You can also include ruby code inside
-the templates. Here is an example:
-
-<pre>
-.post#post_5
- .content= simple_format(@post.content)
-</pre>
-
-h3. Heroku
-
-Ruby PaaS (Platform as a Service). They provide free cloud hosting for
-Rack applications with paid plans for increased resources. It is a very
-easy way to deploy your first application. Beware, they are easily owned
-by Amazon's AWS failure.
-
-h3. Integration Testing
-
-Integration testing referes testing different modules of code in concert.
-Ingration testing tests that all the parts of your system are working correctly.
-It is different than unit testing because it involves more than one component
-at at time. Integration tests for rails apps usually mean submitting web requests
-and see how they are handled. You can take this a step further and move into
-acceptance testing which simulates a user in front of your application.
-Integration tests are written "outside in" meaning they only focus on
-the outward functions of your system.
-
-h3. Less
-
-Less is a library for writing stylesheets. It enables you to do things
-like use variables and other handy things. Less files are compiled into
-vanilla CSS files. It is similar to SCSS/SASS. Twitter Bootstrap is written in Less.
-
-h3. Metaprogramming
-
-Metaprogramming is a term for dynamically generating code at runtime.
-Metaprogramming is why Rails feel the way it does. ActiveRecord
-associations to dynamically add methods to your classed based on how to
-declare them. Metaprogramming is possible in Ruby because it's a dynamic
-language interpreted at run time.
-
-h3. Nonrelational Databases (NoSQL)
-
-Nonrelational databases are the oppposte of relational databases. They
-are usually more free form and don't have defined schemas (like tables.)
-There is no such thing as SQL for non relational databases because each
-one uses it's own langauge to inster and retreive data. MonogDB is
-the most popular nonrelationable database.
-
-h3. Open Classes & Monkey Patching
-
-Ruby has open classes. This means you can simply declare methods insides
-a class that's already been defined. ActiveSupport uses open classes to
-add all those nice methods to core Ruby objects. This is how you can add
-a method to the `String` class:
-
-<ruby>
-class String
- def lulz
- puts "lulz " * self.length
- end
-end
-
-"Hey".lulz
-</ruby>
-
-h3. ORM - Object Relational Mapping
-
-ORM's provide a way to map one object into some sort of persistent storage.
-ActiveRecord is a well known ORM that implements that Active Record pattern.
-ActiveRecord allows you persist objects into a relational database. ActiveRecord
-is not the only ORM. Datamapper and Sequel are also popular for relational databases.
-Mongoid is popular for MongoDB (a nonrelational database.)
-
-h3. Relational Databases
-
-Relational databases store data into tables with columns. Each column has a
-type of data. For example: numbers, text, or dates. Data is retrieved
-using SQL. ORM's are commonly used to make it easier to work with data
-in retional databases. PostreSQL and MySQL are examples of popular
-realtional databases to use with Rails.
-
-h3. Rack
-
-Rack is a standard interface for writing web applications in Ruby.
-Rails as of version 3 is a Rack app. Rack defines things like HTTP requests
-and how your code is called. Rack applications are easily served by application
-servers such as Thin.
-
-h3. Rake
-
-Rake is like the Ruby version of make. You can create custom tasks that
-can be executed from the command line. `rake db:migrate` is a classic
-example. You can create as many tasks as you want. They can have
-prerequisites. They can also be in namespaces. A ':' designates tasks in
-different namespace. `db:migrate` means 'db' namespace, 'migrate' task.
-Multiple tasks can be executed in one go like so: `rake db:create
-schema:load`. They will be executed in the order they are listed. Rake
-was originally designed to be like make, but is often used to execute
-arbitrary code outside an application context. A cron job is a perfect
-example.
-
-h3. RSpec
-
-Rspec is a unit testing framework. It is based around the idea that test
-should describe behavior of classes in an english like way. Test files
-are called "specs". Spec files are divided into "examples." Examples
-contain matchers. Spec files can share examples. Here is an example
-spec_file:
-
-<ruby>
-require 'spec_helper'
-
-describe Post do
- it { should have_many(:comments) }
-
- describe "Post#out_dated?" do
- subject { Post.new :created_at => 2.months.ago }
-
- it { should be_outdated }
- end
-end
-</ruby>
-
-h3. RVM
-
-Rvm stands for Ruby Version Manager. It is a set of bash script designed
-to allow you switch out Ruby interpreters on the fly. It manages
-installed ruby interpreters and makes is very easy to install different
-implementations. It also manages Gemsets. Gemsets are groups of gemsets
-that are distinct from other groups (except the global gemset which
-shares gems between different ruby interpreters).
-
-h3. Rbenv
-
-Rbenv was created to address some flaws in RVM. It does the same thing
-as RVM in a different way. It allows you manage different Ruby versions
-and switch between them.
-
-h3. SASS & SCSS
-
-SASS and SCSS are CSS abstraction languages. They are compiled down to
-CSS. They allow you use variables, modules and include other files.
-In short, they make it much easier to write and main large amounts of
-CSS.
-
-h3. SQL - Structured Query Language
-
-SQL is the standard language for talking to relational database. It's sole
-purpose is to describe what to get from the db, and now how to get it.
-SQL is based on simple concepts like selects and joins. You select columns
-from tables that you want back. You can define conditions to further refine
-your query or use joins to connect more than one table together.
-
-h3. Selenium
-
-Selenium is a library that simulates user interaction with a browser. It
-runs the full browser. Selenium works best in FireFox, but can work in
-Chrome and other browsers. Commands are sent across as JavaScript which
-the browser evaluates to complete each action. Selenium is the most
-complete solution for simulating a user for your web application.
-
-h3. Unit Testing
-
-Unit testing refers to testing small units of code insolation. This
-makes it easier to determine if individual modules of code are functioning
-directly. You can do unit testing with many different libraries. +Test::Unit+
-is the Rails default.
-
-h3. Test Driven Development (TDD)
-
-The practice of writing a failing test first then completing the
-implementation. This makes the developer spend more time thinking about
-the code upfront while providing a solid test suite for the entire
-application. You can use Test::Unit for TDD in Ruby.
-
-h3. Test::Unit
-
-Test::Unit is a unit test framework built into Ruby 1.8. It is known as
-MiniTest in 1.9. It provides functionality for writing test cases with
-standard setup and tear down. Rails generates test files built in
-Test::Unit by default. It provides basic assertions. It's similar to
-jUnit or any member of the xUnit family. Here is an example:
-
-<ruby>
-require 'test_helper'
-
-class PostTest < Test::Unit::TestCase
-
- def test_out_dated? do
- post = Post.new :created_at => 2.months.ago
- assertTrue(post.out_dated?)
- end
-end
-</ruby>
-
-h3. UJS (Unobstrusive JavaScript)
-
-Unobtrusive JavaScript means separating JavaScript from the HTML.
-Specifying an `onClick` attribute in HTML is consider obtrusive because
-it obfuscates the markup. It is also hard to maintain because your
-javascript is harder to maintain. You can do the same thing
-unobtrusively by using jQuery to find the element by a class name and
-applying a click handler. Essentially UJS means keep JavaScript in .js
-files and HTML in .html files. Separation of church and state if you
-will.
-
-h3. Webrat
-
-Webrat is the original headless browser. It's similar to selenium, but
-much more implemented. It does not execute JavaScript and does not
-execute in a GUI. It is the most basic driver and is perfect for
-interacting with simple websites.