标签: sinatra

部署Compojure/Sinatra应用程序

部署compojure/sinatra应用程序的首选方法是什么?我在主机上运行了多个站点,因此我无法在端口80上运行jetty/mongrel.我应该如何处理在同一主机上运行的多个站点/应用程序?

ruby clojure sinatra compojure

3
推荐指数
1
解决办法
1316
查看次数

Ruby/Sinatra/HAML flash消息问题

我有以下小型Sinatra应用程序(我删除了额外的不需要的代码):

helpers do
    def flash(args={}) 
        session[:flash] = args 
    end 

    def flash_now(args={}) 
        @flash = args 
    end
end

before do 
  @flash = session[:flash] || {} 
  session[:flash] = nil 
end

post '/post' do
    client = Twitter::Client.new(:login => 'xxxxxxx', :password => 'xxxxxxx')

    username = params[:username]
    type = params[:type]
    tags = params[:tags]
    budget = params[:budget]

    if username != '' && type != '' && tags != '' && budget != '' 

        message = username + ' is looking for a ' + type +  ' …
Run Code Online (Sandbox Code Playgroud)

ruby haml sinatra

3
推荐指数
1
解决办法
2849
查看次数

Sinatra app中的自定义子域名

我希望我的Sinatra应用程序允许用户创建一个帐户并通过子域(即your-account.myapp.com)访问它.

我发现这是为了提取子域名(http://gist.github.com/55784#file_subdomains.rb),但我很难实现它.

有任何想法吗?

我有一个帐户模型(datamapper),其中包含一个名为帐户名称的字段,该字段应该是子域名.

谢谢!

ruby heroku sinatra

3
推荐指数
1
解决办法
1791
查看次数

使用异步sinatra流多个body

我想从javascript开始一个很长的轮询请求,这很好,我希望我的ruby prog将多个body部分流式传输到javascript.为什么以下(伪)代码不起作用?

require 'rubygems'
require 'sinatra/async'
require 'eventmachine'
require 'thin'
require 'json'

    class Test < Sinatra:Base
      register Sinatra::Async

      aget '/process' do
        for c in 1..10
          body {
            { :data => [ "this is part #{c}" ] }.to_json
          end
        end
      end

      run!
    end
Run Code Online (Sandbox Code Playgroud)

也许我误解了长期轮询和异步应该做什么,但我的期望是我将多个机构送回客户端?我需要使用eventmachine吗?

谢谢

ruby asynchronous sinatra

3
推荐指数
1
解决办法
3319
查看次数

Sinatra会话被自动销毁

我不确定为什么,但我的会话每次请求都被删除了.

这是我的代码

require 'rubygems'
require 'sinatra'
require 'sinatra/base'
require 'haml'
require 'facebook_oauth'
class MyClass < Sinatra::Base
  set :logging, true
  set :sessions, true
  get "/auth/facebook_callback" do

    // Do some facebook login which is fine    

    access_token = facebookClient.authorize(:code => params[:code])
    session[:access_token] = access_token.token
    session[:user] = facebookClient.me.info['name']
    session[:id] = facebookClient.me.info["id"]
    #print session by "pp session" I can still see all the sessions
    redirect '/'
  end

  get '/' do
    #print all the sessions again. And I can't see anything. The session_id is also different …
Run Code Online (Sandbox Code Playgroud)

ruby session facebook sinatra

3
推荐指数
1
解决办法
1895
查看次数

Sinatra"你好世界"中的错误

做Sinatra 的入门.我收到此错误:

./sinatra.rb:5: undefined method `get' for main:Object (NoMethodError)
        from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
        from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require'
        from sinatra.rb:3
Run Code Online (Sandbox Code Playgroud)

谷歌搜索这些错误返回ruby LoadError:无法加载这样的文件,我没有看到它与之相关Sinatra.

不确定我需要分享哪些其他信息才能使我的问题更加清晰.那么告诉我应该运行哪些其他命令来清楚地解决问题.

更新:实际代码

# sinatra.rb
require 'rubygems'
require 'sinatra'

get '/' do
        'hey girl'
end
Run Code Online (Sandbox Code Playgroud)

ruby linux sinatra

3
推荐指数
1
解决办法
549
查看次数

Ruby/Sinatra应用程序(文件)无法运行(启动)

我正在使用:ruby-1.9.3-p392和sinatra-1.4.3.

当我运行我的文件时,我得到了这个错误:

/home/belka/.rvm/gems/ruby-1.9.3-p392@Rails3.2.13/gems/sinatra-1.4.3/lib/sinatra/base.rb:1408:in `run!': undefined method `run' for HTTP:Module (NoMethodError)

from /home/belka/.rvm/gems/ruby-1.9.3-p392@Rails3.2.13/gems/sinatra-1.4.3/lib/sinatra/main.rb:25:in `block in <module:Sinatra>'
Run Code Online (Sandbox Code Playgroud)

我的代码是sinatra新手最简单的代码(hello.rb):

require 'rubygems'
require 'sinatra'

get '/' do
    'Hello World!'
end
Run Code Online (Sandbox Code Playgroud)

ruby sinatra

3
推荐指数
1
解决办法
1808
查看次数

如何使用mina执行rake任务?

我想在我的Sinatra应用程序中运行我的Rakefile中包含的rake任务(迁移).我正在使用Mina进行部署.rake migrate如果我在服务器或我的开发上运行它,效果很好,但我不能让Mina执行任务.

我当前的部署看起来像这样 config/deploy.rb

task :deploy => :environment do
  deploy do
    # Put things that will set up an empty directory into a fully set-up
    # instance of your project.
    invoke :'git:clone'
    invoke :'deploy:link_shared_paths'

     to :launch do
      queue "sudo /opt/nginx/sbin/nginx -s reload"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我尝试了两者queue "rake migrate"queue "#{rake} migrate"在部署块内和发射块内,但它总是抱怨bash: command not found

ruby rake sinatra mina

3
推荐指数
1
解决办法
2177
查看次数

Sinatra与Postgres和ActiveRecord | 错误推送到Heroku是:无效的DATABASE_URL

我有一个用Sinatra编写的应用程序在本地工作,但我似乎无法推动到heroku.

当我尝试推送到heroku时,我收到以下错误:

----->编写config/database.yml以从DATABASE_URL读取无法检测rake任务确保您可以在$ bundle exec rake -P没有环境变量且使用Gemfile的生产组的情况下针对您的应用运行.这可能是故意的,如果您希望运行rake任务取消构建(CTRL + C)并修复错误然后提交修复:rake aborted!无效的DATABASE_URL

我的Gemfile

source 'https://rubygems.org'
ruby '2.0.0'

gem 'sinatra', require: 'sinatra/base'
gem "pg"
gem "activerecord"
gem "sinatra-activerecord"
gem "rake"

gem 'minitest', require: false
gem 'rack-test', require: false
gem 'faraday'
gem 'json'
gem 'minitest-reporters'
Run Code Online (Sandbox Code Playgroud)

我的database.yml文件

development:
  adapter: postgresql
  encoding: unicode
  database: calendar_development
  host: localhost
  password:

test:
  adapter: postgresql
  encoding: unicode
  database: calendar_test
  pool: 5
  host: localhost
  password:
Run Code Online (Sandbox Code Playgroud)

我的config.ru

require './app'
run Sinatra::Application

ENV['RACK_ENV'] ||= 'development'
Run Code Online (Sandbox Code Playgroud)

Procfile

web: bundle exec rackup config.ru …
Run Code Online (Sandbox Code Playgroud)

ruby postgresql heroku sinatra

3
推荐指数
1
解决办法
4648
查看次数

Padrino websockets + Heroku; 连接在收到握手响应之前关闭

我使用padrino websockets(https://github.com/dariocravero/padrino-websockets)为我的网站提供聊天系统,它在我的本地机器上运行良好.但是,在部署到heroku(免费)之后,websocket将不会建立连接并返回

failed: Connection closed before receiving a handshake response
Run Code Online (Sandbox Code Playgroud)

它在localhost上正常工作,我使用它来连接:

connection = new WebSocket('ws://localhost:3000/channel');
Run Code Online (Sandbox Code Playgroud)

但是,当在heroku上使用时:

connection = new WebSocket('ws://******.herokuapp.com:3000/channel');
Run Code Online (Sandbox Code Playgroud)

它返回握手错误(上图)

我的实现服务器端

websocket :channel do
  on :newmessage do |message|
    currentAccount = Account.find_by(lastLoginIP: message["ip"]) rescue nil

    if currentAccount != nil
      broadcast :channel, {
        "name" => currentAccount.nickname,
        "url" => currentAccount.url,
        "image" =>  currentAccount.image,
        "chatmessage" => message["chatmessage"][0..80]
        }
    end

  end
end
Run Code Online (Sandbox Code Playgroud)

在我的主要Padrino app.rb中,这在我的Procfile中.到底是怎么回事?

web: bundle exec puma -t 1:16 -p ${PORT:-3000} -e ${RACK_ENV:-production}
Run Code Online (Sandbox Code Playgroud)

heroku sinatra websocket padrino

3
推荐指数
1
解决办法
4480
查看次数