free the enterprise with ruby & master your own domain

117
Free The Enterprise With Ruby & Master Your Own Domain Ken Collins metaskills.net

Upload: ken-collins

Post on 20-Aug-2015

990 views

Category:

Technology


0 download

TRANSCRIPT

Free The Enterprise With Ruby & Master

Your Own DomainKen Collins

metaskills.net

Congratulations! e simple fact that you are sitting here listening to me, means you've made a glorious contribution to Science!

Tragic, but informative.

Cave Johnson

Our Time Together

Our Time Together

Our Time Together

Our Time Together

my projects

Our Time Together

my projects

oss windows

Who Am I Again?

?

Who Am I Again?

@MetaSkills

Who Am I Again?

@MetaSkills

Who Am I Again?

@MetaSkills

Who Am I Again?

@MetaSkills

Who Am I Again?

@MetaSkills

...

Sr. Software Engineer @ Decisiv

JavaScript

Blog @ MetaSkills.net

Freetime @ HomeMarks.com

Advocate @ 757rb.org

Dan Pink -On The Surprising Science Of Motivation

TED Talkhttp://is.gd/At2iVURSA Animatehttp://is.gd/SpuTbN

AutonomyThe urge to

direct our own lives.

MasteryThe desire to get betterat something that matters.

PurposeThe yearning to do what we do in the service of something larger than ourselves.

AutonomyMasteryPurpose

Great!Sign Me Up.

The Absolute Basics (Github)You (yes, you!) should contribute to open sourcehttp://thechangelog.com/post/5367356233/

The Absolute Basics (Github)You (yes, you!) should contribute to open sourcehttp://thechangelog.com/post/5367356233/

Forking A Project

The Absolute Basics (Github)You (yes, you!) should contribute to open sourcehttp://thechangelog.com/post/5367356233/

Forking A ProjectTrack Upstream Changes

The Absolute Basics (Github)You (yes, you!) should contribute to open sourcehttp://thechangelog.com/post/5367356233/

Forking A ProjectTrack Upstream ChangesNever Work On Master!

The Absolute Basics (Github)You (yes, you!) should contribute to open sourcehttp://thechangelog.com/post/5367356233/

Forking A ProjectTrack Upstream ChangesNever Work On Master!Remote Tracking Branches

The Absolute Basics (Github)You (yes, you!) should contribute to open sourcehttp://thechangelog.com/post/5367356233/

Forking A ProjectTrack Upstream ChangesNever Work On Master!Remote Tracking BranchesPull Requests

OSS For The Tenderfoot

OSS For The Tenderfoot

Read The Manual

OSS For The Tenderfoot

Read The ManualLook For Support Channels

OSS For The Tenderfoot

Read The ManualLook For Support ChannelsDo Not Assume Critical Bugs

OSS For The Tenderfoot

Read The ManualLook For Support ChannelsDo Not Assume Critical BugsInclude Relevant Information

OSS For The Tenderfoot

Read The ManualLook For Support ChannelsDo Not Assume Critical BugsInclude Relevant InformationWe Like To Mentor!

my projects

ActionMailerActionPackActiveModelActiveRecordActiveResourceActiveSupport

ActionMailerActionPackActiveModelActiveRecordActiveResourceActiveSupport

Powerful Models

class User < ActiveRecord::Base end

user = User.find(10)user.username # => 'metaskills'user.email # => '[email protected]'

Associationsclass Client < ActiveRecord::Base has_one :address has_many :ordersend

class Address < ActiveRecord::Base belongs_to :clientend

class Order < ActiveRecord::Base belongs_to :clientend

Validations

class Person < ActiveRecord::Base validates_presence_of :nameend p = Person.newp.valid? # => falsep.errors # => {:name=>["can't be blank"]}p.save # => falsep.save! ActiveRecord::RecordInvalid

Dirty Attributesperson = Person.find_by_name('Uncle Bob')person.changed? # => false

person.name = 'Bob'person.changed? # => trueperson.name_changed? # => trueperson.name_was # => 'Uncle Bob'person.name_change # => ['Uncle Bob', 'Bob']person.name = 'Bill'person.name_change # => ['Uncle Bob', 'Bill']

person.saveperson.changed? # => falseperson.name_changed? # => false

Migrationsclass AddReceiveNewsToUsers < ActiveRecord::Migration

def self.up change_table :users do |t| t.boolean :receive_newsletter, :default => false end User.update_all :receive_newsletter => true end

def self.down remove_column :users, :receive_newsletter end

end

And The List Goes On...

And The List Goes On...

Identity Map

And The List Goes On...

Identity MapPrepared Statements

And The List Goes On...

Identity MapPrepared StatementsEtc, etc, etc...

ActiveRecordSQL Server Adapter

SQL Server Adapter

SQL Server Adapter

Maintainer For 4 Years

SQL Server Adapter

Maintainer For 4 YearsWill Talk About 3.1.x

SQL Server Adapter

Maintainer For 4 YearsWill Talk About 3.1.x Use Rational Version Policy

SQL Server Adapter

Maintainer For 4 YearsWill Talk About 3.1.x Use Rational Version Policy2005, 2008, 2011 & Azure

SQL Server Adapter

Maintainer For 4 YearsWill Talk About 3.1.x Use Rational Version Policy2005, 2008, 2011 & AzureIncludes ARel Visitor

SQL Server Adapter

Maintainer For 4 YearsWill Talk About 3.1.x Use Rational Version Policy2005, 2008, 2011 & AzureIncludes ARel Visitor DBLIB, ODBC Connection Mode

Key Adapter Features

Key Adapter Features

Stored Procedures

Key Adapter Features

Stored ProceduresViews (Schema Reflection)

Key Adapter Features

Stored ProceduresViews (Schema Reflection)Different Schemas

Key Adapter Features

Stored ProceduresViews (Schema Reflection)Different SchemasAuto Reconnects

Key Adapter Features

Stored ProceduresViews (Schema Reflection)Different SchemasAuto ReconnectsSQL Azure

Key Adapter Features

Stored ProceduresViews (Schema Reflection)Different SchemasAuto ReconnectsSQL Azure

http://is.gd/UDdVzT

Prepared Statements

Prepared Statements

SELECT TOP(1) * FROM [posts] WHERE [id] = 1SELECT TOP(1) * FROM [posts] WHERE [id] = 2SELECT TOP(1) * FROM [posts] WHERE [id] = 3

Prepared Statements

SELECT TOP(1) * FROM [posts] WHERE [id] = 1SELECT TOP(1) * FROM [posts] WHERE [id] = 2SELECT TOP(1) * FROM [posts] WHERE [id] = 3

EXEC sp_executesql N'SELECT TOP(1) * FROM [posts] WHERE [id] = @0', N'@0 int', @0 = 1EXEC sp_executesql N'SELECT TOP(1) * FROM [posts] WHERE [id] = @0', N'@0 int', @0 = 2EXEC sp_executesql N'SELECT TOP(1) * FROM [posts] WHERE [id] = @0', N'@0 int', @0 = 3

Prepared Statementshttp://www.engineyard.com/blog/2011/sql-server-10xs-faster-with-rails-3-1/

TinyTDSRuby C Extension

TinyTDS

TinyTDS

Wraps FreeTDS’s

TinyTDS

Wraps FreeTDS’sUses DBLIB Interface

TinyTDS

Wraps FreeTDS’sUses DBLIB Interface Converts All Data Types To Ruby Primitives

TinyTDS

Wraps FreeTDS’sUses DBLIB Interface Converts All Data Types To Ruby PrimitivesProper Encoding Support

TinyTDS

Wraps FreeTDS’sUses DBLIB Interface Converts All Data Types To Ruby PrimitivesProper Encoding SupportHighly Tested!

TinyTDS

Wraps FreeTDS’sUses DBLIB Interface Converts All Data Types To Ruby PrimitivesProper Encoding SupportHighly Tested!

From 2000 to Azure

Modern SQL Server & Railshttp://www.engineyard.com/blog/2011/modern-sql-server-rails/

oss windows

oss windows

http://rubyheroes.com/

Luis Lavena@luislavenaWayne E Seguin@wayneeseguin

Rails Installer

Rails Installer

Rails Installer

Ruby 1.8.7

Rails Installer

Ruby 1.8.7Git 1.7.3

Rails Installer

Ruby 1.8.7Git 1.7.3DevKit

Rails Installer

Ruby 1.8.7Git 1.7.3DevKitRails 3.0, SQLite3, TinyTDS

Rails Installer

Ruby 1.8.7Git 1.7.3DevKitRails 3.0, SQLite3, TinyTDSBeta 2.0 Version

Rails Installer

Ruby 1.8.7Git 1.7.3DevKitRails 3.0, SQLite3, TinyTDSBeta 2.0 Version

Ruby 1.9 & Rails 3.1

GoingNative

Going NativeRake Compiler

https://github.com/luislavena/rake-compiler

Going NativeRake Compiler

https://github.com/luislavena/rake-compiler

Mimics RubyGems Build Process

Going NativeRake Compiler

https://github.com/luislavena/rake-compiler

Mimics RubyGems Build ProcessBuild Extensions For Different Ruby Implementations.

Going NativeRake Compiler

https://github.com/luislavena/rake-compiler

Mimics RubyGems Build ProcessBuild Extensions For Different Ruby Implementations.Build "FAT" Native Gems For Windows Users (from Linux or OSX)

Going NativeMiniPortile

https://github.com/luislavena/mini_portile

Going NativeMiniPortile

https://github.com/luislavena/mini_portile

A Minimalistic, Simplistic And Stupid Implementation Of A Port/Recipe System.

Going NativeMiniPortile

https://github.com/luislavena/mini_portile

A Minimalistic, Simplistic And Stupid Implementation Of A Port/Recipe System.For Gem Developers!!!

Going Native (TinyTDS)

Going Native (TinyTDS)

Git Clone The Project.

Going Native (TinyTDS)

Git Clone The Project.$ bundle install && rake

Going Native (TinyTDS)

Git Clone The Project.$ bundle install && rake

Download libiconv & freetds.

Going Native (TinyTDS)

Git Clone The Project.$ bundle install && rake

Download libiconv & freetds.Compile Each.

Going Native (TinyTDS)

Git Clone The Project.$ bundle install && rake

Download libiconv & freetds.Compile Each.Build Ruby Gem C Extension. Statically Linked To Libs.

Going Native (TinyTDS)

Git Clone The Project.$ bundle install && rake

Download libiconv & freetds.Compile Each.Build Ruby Gem C Extension. Statically Linked To Libs.Run Tests!

AdventureWorks.Ruby

AdventureWorks.Ruby

AdventureWorks.Ruby

AdventureWorks.Ruby

AdventureWorks.Ruby

On github.com/rails-sqlserver

AdventureWorks.Ruby

On github.com/rails-sqlserver Database Cloning

AdventureWorks.Ruby

On github.com/rails-sqlserver Database CloningRake Override Task

AdventureWorks.Ruby

On github.com/rails-sqlserver Database CloningRake Override TaskUsage of smocript/sqlcmd