Flatiron学校からのプロジェクトを強化すること
14663 ワード
目次 The First Build The Project Now CSS & JavaScript Challenges Heroku Deployment & Establishing A Connection To The Database
2019年11月から2020年5月までフラチトロン校に通った.それは私が今まで経験した中で最も驚くべき経験の一つでした.学生は、プログラムの5つのモジュールの各アプリケーションを構築する必要があります.私は速いペースでプログラムしていたので、各モジュールは1ヶ月長く続きました.最初の月は、手続きとオブジェクト指向プログラミングの学習Ruby .
このブログでは、私が最初にFiztironでSinatraアプリケーションを作成したときの違いを示します.
Flatironの2番目の月は、新しいモジュールを始めましたSinatra . これは、Rubyで書かれた無料のオープンソースソフトウェアWebアプリケーションライブラリとドメイン固有の言語(DSL)です.シナトラはFlatironが最初にWebアプリケーションを学ぶためにあなたを紹介するものです.
私はユーザーが店の“壁の穴”タイプについての意識を広めることができるアプリケーションを構築したい.最初のビルドは正確にそれを行いました.
"ホーム"ページ:
レビューは新しい形式のページです.
何も本当に特別な.それは裸骨の造りだった.アプリケーションがクラッシュする
アプリケーションは、今よりも多くの機能を持つことができます.私はフィードバックなしでより良いウェブサイトを設計する方法を知りません、そして、何人かの非常にすばらしい友人は私が彼らが実行されたことを望む何かを話すために彼らの時間をとりました.私がCSSを更新するとき、私はまた、私が加えた特徴に関してこのブログをアップデートします.
ここでは、ライブアプリケーションを表示できます.https://hole--in-the--wall.herokuapp.com/ ユーザーは今サインアップとログインできます.また、編集したり、アカウントを削除します. 店を作成することができます&Googleマップだけでなく、編集にリンクします. レビューをすぐに作成、編集、および削除することができます. 店のお気に入りは今作成し、削除することができます. アプリケーションの機能semantic HTML .
この素晴らしい拡張機能を使用すると、Webページ上のアクセシビリティの現在の状態を表示することができます.
使用するFlexbox レイアウトがもっとシンプルなページで.
使用するMedia Queries ブレークポイントが適切に設定されていることを確認します.
私は、ユーザーが特定のボタンをクリックしたときに表示されるフォームを望んでいたページにJavaScriptを実装
私はしたくなかった
このアプリケーションをアップグレードする課題:Heroku展開、Sinatra宝石、ActiveRecordクエリ、JavaScript、およびCSS.
たとえば、Sinatra contrib gemの名前空間機能は、ラックの名前空間に干渉するので、アプリケーションで機能しません.Sinatraは、最新の更新プログラムをリリースしたので、近い将来、名前空間の機能を更新するかもしれない.
Flatiron ActiveRecordの基本を教えてもそれはあなたが本当にどのように動作するかを把握することです.このアプリケーションを更新する私を確認し、物事のようなものを扱うことができますActiveRecord method chaining , ActiveRecord::Relation , ActiveRecord::Result , クエリの戻り値、セキュリティ、および熱心な読み込みをグラブまたは変換する.
Herokuはあなたのウェブサイトを展開するときSQLite 3を許可しません.Herokuからのアプリケーションの代わりにPostgreSQLデータベースを提供しました.
SQLite 3とPostgreSQLは同じ種類の問い合わせを許可しません.例えばSQLite 3では以下のようになりました.
私の環境を設定して、データベースへの接続を確立するには、ActiveRecordでこれを行うために利用できるブログや記事だけが、この例のようにActiveRecord自体に直接接続を確立しています.
あなたが行くならばsinatra-activerecord Githubページには、以下のようなことが必要です.
「Sinatra/ActiveRecord ' gemをあなたのSinatraアプリケーションに要求し、データベース接続を確立します.」
これは文字通り私の環境です.rbは次のようになります.
The Sinatra Readme また、設定を設定する
Herokuでは、アプリケーションの環境変数を設定できます.見つけることができますhere .
Heroku also requires that you include a Procfile アプリケーションのルートレベルで、アプリケーションを起動するときに実行するコマンドを指定します.このアプリのためだけに含まれます:
私は、あなたがこのブログを読む時間をとって、私のアプリケーションがすることができるものを見たことを大いに感謝します.あなたがコードを通して見てみたいならば、私が非常に感謝されることができたどんな改善もあるかどうか見てください.
私は私ができるときにアプリケーション/機能に修正プログラムを追加します.追加したいものがあるなら、Githubにプッシュしてください. 私に手を差し伸べる
に貢献するhole-in-the-wall Github repo
これは私が好きなアプリケーションであり、使用し続けるのが大好きだ.私は別のフレームワークとツールを使用して、このアプリケーションを更新します.
学校教育経験
2019年11月から2020年5月までフラチトロン校に通った.それは私が今まで経験した中で最も驚くべき経験の一つでした.学生は、プログラムの5つのモジュールの各アプリケーションを構築する必要があります.私は速いペースでプログラムしていたので、各モジュールは1ヶ月長く続きました.最初の月は、手続きとオブジェクト指向プログラミングの学習Ruby .
このブログでは、私が最初にFiztironでSinatraアプリケーションを作成したときの違いを示します.
フラティオン月2
Flatironの2番目の月は、新しいモジュールを始めましたSinatra . これは、Rubyで書かれた無料のオープンソースソフトウェアWebアプリケーションライブラリとドメイン固有の言語(DSL)です.シナトラはFlatironが最初にWebアプリケーションを学ぶためにあなたを紹介するものです.
Webアプリケーションの構築
最初の造り
私はユーザーが店の“壁の穴”タイプについての意識を広めることができるアプリケーションを構築したい.最初のビルドは正確にそれを行いました.
"ホーム"ページ:
レビューは新しい形式のページです.
何も本当に特別な.それは裸骨の造りだった.アプリケーションがクラッシュする
reviews
, しかし、こわないstores
or favorites
. ユーザーがサインアップしてログインすることができますが、削除したり、アカウントを編集できませんでした.プロジェクト今
アプリケーションは、今よりも多くの機能を持つことができます.私はフィードバックなしでより良いウェブサイトを設計する方法を知りません、そして、何人かの非常にすばらしい友人は私が彼らが実行されたことを望む何かを話すために彼らの時間をとりました.私がCSSを更新するとき、私はまた、私が加えた特徴に関してこのブログをアップデートします.
ここでは、ライブアプリケーションを表示できます.https://hole--in-the--wall.herokuapp.com/
を使用して
この素晴らしい拡張機能を使用すると、Webページ上のアクセシビリティの現在の状態を表示することができます.
CSS
使用するFlexbox レイアウトがもっとシンプルなページで.
使用するMedia Queries ブレークポイントが適切に設定されていることを確認します.
ジャバスクリプト
私は、ユーザーが特定のボタンをクリックしたときに表示されるフォームを望んでいたページにJavaScriptを実装
erb
.私はしたくなかった
fetch
このアプリケーションの情報.私は、ちょうどSinatraバックエンド/フロントエンドアプリケーションとしてまっすぐにしたかったですerb
ビューJavaScriptが必要なのは、どのように多くのビューをテンプレートを短縮することでした.挑戦
このアプリケーションをアップグレードする課題:Heroku展開、Sinatra宝石、ActiveRecordクエリ、JavaScript、およびCSS.
たとえば、Sinatra contrib gemの名前空間機能は、ラックの名前空間に干渉するので、アプリケーションで機能しません.Sinatraは、最新の更新プログラムをリリースしたので、近い将来、名前空間の機能を更新するかもしれない.
Flatiron ActiveRecordの基本を教えてもそれはあなたが本当にどのように動作するかを把握することです.このアプリケーションを更新する私を確認し、物事のようなものを扱うことができますActiveRecord method chaining , ActiveRecord::Relation , ActiveRecord::Result , クエリの戻り値、セキュリティ、および熱心な読み込みをグラブまたは変換する.
Herokuはあなたのウェブサイトを展開するときSQLite 3を許可しません.Herokuからのアプリケーションの代わりにPostgreSQLデータベースを提供しました.
SQLite 3とPostgreSQLは同じ種類の問い合わせを許可しません.例えばSQLite 3では以下のようになりました.
Store.select(
"stores.id,
stores.name,
stores.state,
count(favorites.store_id) AS favorites_count"
).joins(:favorites).limit(5).group(:name).order(
"favorites_count DESC"
).as_json
しかし、PostgreSQLでは動作しません.この場合、.group
メソッド.Store.select(
"stores.id,
stores.name,
stores.state,
count(favorites.store_id) AS favorites_count"
).joins(:favorites).limit(5).group(
"stores.id,
stores.name,
stores.state"
).order("favorites_count DESC").as_json
野奥展開
私の環境を設定して、データベースへの接続を確立するには、ActiveRecordでこれを行うために利用できるブログや記事だけが、この例のようにActiveRecord自体に直接接続を確立しています.
require 'bundler/setup'
Bundler.require
configure :development do
ENV['SINATRA_ENV'] ||= "development"
require 'bundler/setup'
Bundler.require(:default, ENV['SINATRA_ENV'])
ActiveRecord::Base.establish_connection(
:adapter => "sqlite3",
:database => "db/#{ENV['SINATRA_ENV']}.sqlite"
)
end
configure :production do
db = URI.parse(ENV['DATABASE_URL'] || 'postgres:///localhost/mydb')
ActiveRecord::Base.establish_connection(
:adapter => db.scheme == 'postgres' ? 'postgresql' : db.scheme,
:host => db.host,
:username => db.user,
:password => db.password,
:database => db.path[1..-1],
:encoding => 'utf8'
)
end
これはフラチロンでも教えられました.それは知って良いですが、このアプリケーションでは、実際には、データベースへの接続を確立するためのより簡単な方法です.あなたが行くならばsinatra-activerecord Githubページには、以下のようなことが必要です.
「Sinatra/ActiveRecord ' gemをあなたのSinatraアプリケーションに要求し、データベース接続を確立します.」
# app.rb
require "sinatra/activerecord"
set :database, {adapter: "sqlite3", database: "foo.sqlite3"}
# or set :database_file, "path/to/database.yml"
「あなたがいるならconfig/database.yml
ファイルは、自動的に、それを指定する必要はロードされます.また、生産では$DATABASE_URL
環境変数が自動的にデータベースとして読み込まれます(そうでなければ指定しない場合)."これは文字通り私の環境です.rbは次のようになります.
require 'bundler/setup'
Bundler.require
require_all 'app'
それから私のapplication_controller
:configure do
set :public_folder, 'public'
set :views, 'app/views'
set :database_file, "config/database.yml"
enable :sessions
end
configure :test, :development do
set :session_secret, File.read("config/keys/session_secret.txt")
set :google_api, File.read("config/keys/API_KEY.txt")
end
configure :production do
set :session_secret, ENV['SESSION_KEY']
set :google_api, ENV['GOOGLE_API_KEY']
end
私がしなければならなかったのは、どこで私のdatabase.yml
ファイルがあり、データベースへの接続を設定しました.The Sinatra Readme また、設定を設定する
configure
上記のメソッド.Herokuでは、アプリケーションの環境変数を設定できます.見つけることができますhere .
Heroku also requires that you include a Procfile アプリケーションのルートレベルで、アプリケーションを起動するときに実行するコマンドを指定します.このアプリのためだけに含まれます:
web: bundle exec rackup config.ru -p $PORT
フィードバック
私は、あなたがこのブログを読む時間をとって、私のアプリケーションがすることができるものを見たことを大いに感謝します.あなたがコードを通して見てみたいならば、私が非常に感謝されることができたどんな改善もあるかどうか見てください.
私は私ができるときにアプリケーション/機能に修正プログラムを追加します.追加したいものがあるなら、Githubにプッシュしてください.
Reference
この問題について(Flatiron学校からのプロジェクトを強化すること), 我々は、より多くの情報をここで見つけました https://dev.to/ethanmgustafson/enhancing-projects-from-flatiron-school-sinatra-hole-in-the-wall-gc5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol