Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Sinatra ã¯ããã¦è§¦ã£ããã ãã©ããã°ããã¡ã¤ã«ã«æ¸ãæ¹æ³ããªããªãããããªãã£ãã ãã°ãããã ãã¡ã¤ã«ã«æ¸ãããã®ã§ãã çµè« ç¬èªã®ããã«ã¦ã§ã¢ã§ env['app.logger'] ãè¨å®ããã¢ããªã±ã¼ã·ã§ã³ã®loggerã¡ã½ããããªã¼ãã¼ã©ã¤ãããã åè ruby - Use Rack::CommonLogger in Sinatra - Stack Overflow ããã«æ¸ãã¦ããéãã ã£ããé¢åãããã¼ã ãµã³ã㫠以ä¸ã§ãã°ããã¡ã¤ã«ã«åºåããããã¢ã¯ã»ã¹ãã°ã¨ã¢ããªã±ã¼ã·ã§ã³ãã°ãå¥ã®ãã¡ã¤ã«ã«åºåãããã¨ãã§ããã config.ru Loggerãä½ã£ã¦ããã«ã¦ã§ã¢ã«æ¸¡ãã require 'logger' require 'sampleapp' require 'applog' logdir = File.dirname(__FILE__) + "/log
Michael Mahemoff  //  Web designer/developer. Rails/Ajax/etcThis is my random anything-goes blog - I am treating it as an easy way to generate mini web pages, rather than a continuous flow of consciousness on any particular topic. It gives me an outlet for things I can't say on Twitter in 140 characters, but are too unstructured, short, incomplete, and grammatically trainwrecked to post on my main
Sinatraã使ã£ã¦ãã¼ã ã¿ã¤ã ã©ã¤ã³ã®è¡¨ç¤ºãæç¨¿ãåºæ¥ãTwitterã¯ã©ã¤ã¢ã³ããä½ãã ãã³ãã¬ã¼ãã¨ã³ã¸ã³ã¯hamlã使ç¨ãããrubyã®ãã¼ã¸ã§ã³ã¯1.9.2ã§è©±ãé²ããã ã½ã¼ã¹ã³ã¼ãã¯githubã«ã¢ãããã¦ãã®ã§ãã£ã¡ã®ã»ããåèã«ããªãããã®è¨äºãèªãã¨åããããããããããªãã åèã«ãããµã¤ãã¯è¨äºã®æå¾ã®æ¹ã«æ¸ãã¦ããã æºå oauthèªè¨¼ã¨twitterã®APIã使ãã®ã§ããããã®ã©ã¤ãã©ãªã使ç¨ãããã¬ã¼ã ã¯ã¼ã¯(sinatra)ãã¤ã³ã¹ãã¼ã«ããã gem install sinatra gem install oauth gem install twitter app.rbã®ä¸èº« configure do use Rack::Session::Cookie, :secret => Digest::SHA1.hexdigest(rand.to_s) KEY
Top ã¤ã³ã¹ãã¼ã« ç°¡åãªä¾ (1) ç°¡åãªä¾ (2) HTMLã®ãã¼ã¸ãä½ã ããè¤éãªã¢ããªã®å ´å ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ ã»ãã·ã§ã³ ãã©ã¼ã ã¨postã¡ã½ãã ãã£ã«ã¿ ã¯ã©ã¹ã®æ§æ è¨å® ã³ãã³ã ãã¹ã Sinatra::Contrib Extensionã®ä½¿ç¨ Sinatra::Reloader Apacheã¨Sinatra (Passenger) Apacheã¨Sinatra (FastCGI) ã¯ã©ã¹ã®æ§æ Application ã¯ã©ã·ãã¯ã¹ã¿ã¤ã«ã¢ããªã±ã¼ã·ã§ã³ã®å®è¡ãåãæã¤ã¯ã©ã¹ã Base ãã¹ã¦ã®Sinatraã¢ããªã±ã¼ã·ã§ã³ã¨ããã«ã¦ã§ã¢ã®åºç¤ã¨ãªãã¯ã©ã¹ã Templates::ContentTyped content_type屿§ã®ã¿ãæã¤ã¢ã¸ã¥ã¼ã«ã Delegator ãã®ã¢ã¸ã¥ã¼ã«ãå«ãããã¨ã«ãããSinatra::Applicationã®ãã¹
railsç·¨ã¯ä»¥åæ¸ããã®ã§sinatraã§ãã£ã¦ã¿ã ç¨éã¨ãã¦ã¯DBã¨ããããªãã¹ã¿ãã£ãã¯ãªãµã¤ãã®æ§ç¯ã§ãã§ãhtmlãcssãjsãçã§æ¸ãã®ã¨ãèããããªããphpã¯ãã¸åå¼ã¿ãããªã¨ãã«ãããã¦ã¾ããã£ã¦æãã®ãã¨ãæ¸ãã¾ãã ï¼bundlerã®ä½¿ãæ¹ã£ã¦ãããrubyã§ã®webå¶ä½å ¨è¬ã£ã¦æãã§ããâ¦ï¼ ã¾ãé©å½ãªå ´æã«ããã¸ã§ã¯ãã®ãã£ã¬ã¯ããªãä½ãã¾ãã hogeã¨ããã¢ã¬ãªãã§ãã¼ããã©ãªãªã«ãã¨ãã¾ãã $ cd ~/Web $ mkdir portfolio $ cd portfolio ã§ããã¸ã§ã¯ãã®ã«ã¼ãã§Gemfileãã¤ãã $ bundle init Writing new Gemfile to /Users/kozo/Web/portfolio/Gemfile ä¸èº«ã¯ãããªæãã ãã... $ vim Gemfile # A sample Gemfi
2012/7/16 10:00 ææã«ããsinatra-contribãä½¿ãæ¨ã追è¨&ä¿®æ£ æªã ã«shotgun使ã£ã¦ãã åè: ã¢ãã¯ãã¼ã ã®ä¸: sinatra (2) - ãªã¼ããªãã¼ã - Sinatra::Reloader (part of Sinatra::Contrib) gemãã¤ã³ã¹ãã¼ã« % gem install sinatra-contrib Classicã¹ã¿ã¤ã« require "sinatra" require "sinatra/reloader" if development? Modularã¹ã¿ã¤ã« require "sinatra/base" require "sinatra/reloader" class MyApp < Sinatra::Base configure :development do register Sinatra::Reload
http://github.com/shokai/sensor-storage ã http://shokai.mag.keio.ac.jp/sensor-storage/ ã§å®è¡ããã 以åpassengerã®ã¤ã³ã¹ãã¼ã«ãã®ãã®ã¯ãããããµããã¡ã¤ã³ã§ã®å®è¡æ¹æ³ããããããªãã£ãã®ã§ä½¿ã£ã¦ãªãã£ããthinã§preforkããã¦mod_proxy_balancerã§ã¢ã¯ã»ã¹æ¯ãåãã¦ãµããã¡ã¤ã³ã«è¦ããããã«åããã¦ãã passengerãmod_railsã¤ã³ã¹ãã¼ã« - æ©æ¬è©³è§£ ä»ãããªããããpassenger-2.2.11ã«ãªã£ã¦ãããã以å¤ã®ã»ããã¢ããã¯åãã ãã£ã¬ã¯ããªæ§æã¯ãããªã£ã¦ããè¨å®ãã¡ã¤ã«config.ruã¨publicãã£ã¬ã¯ããªãéè¦ã server |-- config.ru |-- db |-- log |-- main.rb |-- publi
Sinatraã£ã¦ãããRackã®ããã«ã¦ã§ã¢ã§ããã¾ããã sudo gem install rack_csrf# app.rb require 'rubygems' require 'sinatra' require 'rack/csrf' get '/' do @msg = 'Hello World' erb :index end post '/' do @msg = 'Hello CSRF' erb :index end configure do set :app_file, __FILE__ use Rack::Session::Cookie, :secret => 'change me' use Rack::Csrf, :raise => true end helpers do def csrf_token Rack::Csrf.csrf_token(env) end def
Sinatraã¯ã¨ã¦ãã·ã³ãã«ãªãã¬ã¼ã ã¯ã¼ã¯ã§ãï¼ ä¾ãã°Hello Worldãªãã°æ¬¡ã®ã³ã¼ãã ãã§ã§ããããã§ãï¼ éæ³ã®ããã«ããããã§ããï¼ ããããã©ããã¦ããã§åãã®ãããç¥ã£ã¦ããäººã¯æ¯è¼çå°ãªãã®ã§ã¯ãªãã§ããããï¼ æ°ã«ãªãSinatraã®ã½ã¼ã¹ã³ã¼ããèªãã§ã¿ã¾ãããï¼ Classic Style 㨠Modular Application ã¨ããã§Sinatraã«ã¯ã¯ã©ã¹ã使ã£ãModular Applicationã¨ããæ¸ãæ¹ãããã®ãç¥ã£ã¦ãã¾ããï¼ Hello Worldã¯Modular Applicationã§ã¯ãã®ããã«ãªãã¾ã
Frequently Asked Questions Frequently Asked Questions How do I make my Sinatra app reload on changes? What are my deployment options? How do I use sessions? How do I use session-based flash? Can I run Sinatra under Ruby 1.9? How do I get the ârouteâ for the current page? How do I access helpers from within my views? How do I render partials? Can I have multiple URLs trigger the same route/handler?
Sinatraã®FAQã«Basicèªè¨¼ãè¡ããµã³ãã«ããã£ãã®ã§è©¦ãã¦ã¿ã¾ããã¨ãã£ã¦ãããset Rack::Auth::Basicããå¼ã³åºãã ãã require 'rubygems' require 'sinatra' # èªè¨¼ãè¨å®ã # ã¦ã¼ã¶ã¼åããfooã,ãvarãã®å ´åã®ã¿ã¢ã¯ã»ã¹ã許å¯ããã use Rack::Auth::Basic do |username, password| username =~ /(foo|var)/ end # å¾ã¯æ®éã«routeãç»é²ããã°OK get( "/" ) { 'Hello world!' } ã¹ã¯ãªãããå®è¡ãã http://127.0.0.1:4567/ã«ã¢ã¯ã»ã¹ããã°ãBasicèªè¨¼ã®ãã¤ã¢ãã°ã表示ããã¾ãã ç¹å®ã®ãã¹ã§ã®ã¿èªè¨¼ãæå¹åãã ä¸ã®ä¾ã§ã¯ããµã¼ãã¼ã®ãã¹ã¦ã®ãã¹ã§èªè¨¼ãå¿ è¦ã«ãªãã¾ããç¹å®ã®ãã¹ã«ã¢
123456789101112131415161718192021222324252627282930 SassãSinatraã§ä½¿ãã¨ãã«ãã°ãã¼ãã«ãªãã·ã§ã³ã¨ã㦠ãã³ãã¬ã¼ããã¡ã¤ã«ã®å ´æãæå®ããå ´åã ruby>> set :sass, :load_paths => '/path/to/templates' <<-- ã¨ããæãã«æå®ããã¨æã£ã¦ããã®ã§ããããã¤ã®éã«ã ruby>> set :sass, :views => '/path/to/templates' <<-- ã¨æå®ããªãã¨èªèããªãããã«ãªã£ã¦ããã Sinatraããã³ãã¬ã¼ãã¨ã³ã¸ã³ã¨ãã¦Tileãæ¡ç¨ãããããå¤ãã£ãã®ãããããªãã
Your [Sinatra](http://sinatrarb.com) app: ```ruby get '/' do callback = params.delete('callback') # jsonp json = {'your' => 'data'}.to_json if callback content_type :js response = "#{callback}(#{json})" else content_type :json response = json end response end ``` Your HTML: ```ruby ``` You can also do the same with jQuery: ```ruby $.ajax({ type: 'get', url: '/', dataType: 'jsonp', success: functio
RESTful API ã®ä½æã«ç¹åãããã¤ã¯ããã¬ã¼ã ã¯ã¼ã¯ grape ã®åå¨ãç¥ã£ãã®ã§èª¿æ»ãã¦ã¿ãäºã«ãã¾ãããAPI ã®å®è£ ã« Rails ã® ActionController ã¯éåããããSinatra ã¯è»½ããã©æéãããããããã¨ããä¸ã§ä½ããããã®ãã¬ã¼ã ã¯ã¼ã¯ãã¯ããã¦ãã®å®åã¯â¦ grape ã®ç¹å¾´# grape ã®ç¹å¾´ã¯æ¦ã以ä¸ã®éãã§ããgrape èªä½ã Rack ã¢ããªã±ã¼ã·ã§ã³ãªã®ã§ Rails3 ã«çµã¿è¾¼ããã¨ãåºæ¥ã¾ããã¨ããããã¯çµã¿è¾¼ãã§ä½¿ãã®ãåæã®ããã§ãï¼å¿è«åä½ã§ãåãã¾ãï¼ã Rack ã¢ããªã±ã¼ã·ã§ã³ Sinatra ã©ã¤ã¯ãª DSL èªåã§ JSON ã«ã·ãªã¢ã©ã¤ãºï¼#serializable_hash ã¾ã㯠#to_json ãåå¨ããã°OKã¿ããï¼ grape ã使ã£ã¦ã¿ã# ç¹å¾´ãæ´ãã ã¨ããã§ãå®éã«ã¤ã³ã¹ãã¼ã«ãã¦ä½¿ã£ã¦
ãããã®VPS ã§ãsinatraãåãããã«ããã¾ã§ã®å人çãªã¡ã¢ã sinatra以å¤ã«ããperlãªCGIãphpãåãç°å¢ãä½ãã åæè¨å® ä¸è¨ãå ã«åæè¨å®ãªã©ã CentOS5åæè¨å® â CentOSã§èªå® ãµã¼ãã¼æ§ç¯ ã¡ãªã¿ã«ã yum-updatesdã¯å§ãããæ¢ã¾ã£ã¦ã yum-fastestmirrorã¯å§ãããå ¥ã£ã¦ã yum-cronã®ã¤ã³ã¹ãã¼ã«ã¯æ¢ãã¦ããã SELinuxã¯å§ãããç¡å¹ã«ãªã£ã¦ã ã2012å¹´3æ28æ¥è¿½è¨ã CeotOS6ã®æ¨æºãªã®ãã ãããã®VPSã®æ¨æºãªã®ãã¯åãããªããã©ã logwatchãåæç¶æ ã§ã¯å ¥ã£ã¦ããªããããªã®ã§ã logwatchãå¥éå ¥ããã # yum -y install logwatch ãã¹ãåã®å¤æ´ ããã©ã«ãã®ã¾ã¾ã§ããããã ãã©ã ä»èªåãä½ã®ãµã¼ãã¼ã触ã£ã¦ããã®ããç¥ãããã®ã§ã vi /etc
以ä¸ã®è¨äºãåèã«ãã¦mod_passenger+Rackã§ãã¡ã¤ã³ä»¥ä¸ã®ãã£ã¬ã¯ããªåä½ã§ã¢ããªã±ã¼ã·ã§ã³ãåãããã«ãªã£ãã â [/ruby][linux][apache]sinatra ã¢ããªã Passenger ã§ãSub URIãã§åãã passenger(mod_rails) ã§ãã¼ãã£ã«ãã¹ãã使ããªãè¤æ°ã¢ããªã±ã¼ã·ã§ã³åä½ ããã§ãã§ããhttp://example.com/app1/ã§ã¢ããªã±ã¼ã·ã§ã³ãåä½ãã¦ãããã ãã©ã require "rubygems" require "sinatra" get '/' do redirect '/page' end get '/page' do "hello,world" end ã¨ããå ´åã«http://example.com/pageã«ãªãã¤ã¬ã¯ãããã¦404ã«ãªã£ã¦ãã¾ããã ãªãã¤ã¬ã¯ãå ã redirect
Sub URIã§åããã¨ã¯ï¼ ãã¡ã¤ã³åä½ã§ã¯ãªãããã¡ã¤ã³é ä¸ã®ãã£ã¬ã¯ããªãã«ã¼ãã¨ãã¦ç°å¢ãæ§ç¯ããå ´åã®è©±ã§ãã ä¾ãã°ã http://example.com/ ãã¢ããªã±ã¼ã·ã§ã³ã®ã«ã¼ãã¨ããå ´åã§ã¯ãªãã http://example.com/hogehoge/ ã® hogehoge/ ãã¢ããªã±ã¼ã·ã§ã³ã®ã«ã¼ãã¨ãã¦æ±ãå ´åã§ãã ä½ãããããï¼ ã¶ã£ã¡ããããã¡ã¤ã³ãåãã¾ã§ããªã sinatra ã¢ããªããæ¢åã®ãã¡ã¤ã³å ã§åãããããã ãã£ã¦ãã¨ã ãã£ã¬ã¯ããªæ§æ è¨å®åã«ãäºåã«ãã£ã¬ã¯ããªæ§æãæ¸ãã¦ãã㨠Sinatra ã¢ã㪠/path/to/cgi-bin/sinatra_app/public /path/to/cgi-bin/sinatra_app/tmp /path/to/cgi-bin/sinatra_app/config.ru /path/to/
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}