标签: padrino

ActiveRecord在Ruby 1.9.2-rc1下以ASCII-8Bit返回数据

除了标题之外,当从ActiveRecord加载数据时,尽管我尽最大努力强制编码,但编码始终设置为ASCII-8Bit.我已经在这里输入了尽可能详细的信息,试图建立一个可以用来帮助我的好错误报告!

该项目使用以下技术:

  • Padrino框架
  • Ruby 1.9.2-rc2(同样是1.9.1和1.9.2-preview3)
  • ActiveRecord的
  • MySQL的

(完整名单)

$ bundle show | ack '(record|padrino)'
  * activerecord (2.3.8)
  * padrino (0.9.14)
  * padrino-admin (0.9.14)
  * padrino-core (0.9.14)
  * padrino-gen (0.9.14)
  * padrino-helpers (0.9.14)
  * padrino-mailer (0.9.14)
Run Code Online (Sandbox Code Playgroud)

剧集表:

mysql> DESCRIBE `episodes`;
+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| id             | int(11)      | NO   | PRI | NULL    | auto_increment |
| show_id        | int(11)      | YES  |     | NULL    |                |
| season_id …
Run Code Online (Sandbox Code Playgroud)

ruby mysql encoding activerecord padrino

5
推荐指数
2
解决办法
2103
查看次数

Padrino的身份验证和授权解决方案

我已经和Sinatra和Padrino一起编程很长一段时间了.但是,我仍然无法为Padrino找到正确的身份验证和授权解决方案.让我解释一下我的期望和我已经尝试过的内容.

使用Sinatra,我成功地使用了sinatra-authentication gem以及role_model gem.我通常使用Mongoid ORM与MongoDB交谈.这两个宝石一起让我负责认证,保护路线,检查登录用户的角色以应用访问控制.

sinatra身份验证不适用于Padrino - 它对Sinatra非常具体.我多次尝试过.我已经使用相应的Padrino模块尝试了omniauth和warden,但出于某种原因,我无法让它们像美妙的sinatra-autentication宝石那样简单地工作.

所以 - 在我尝试实现我自己的解决方案(或将padatra身份验证移植到Padrino)之前 - 有人可以建议任何其他身份验证和授权解决方案吗?目前我不需要任何想象力 - 简单的基于数据库的身份验证将完美地工作.

padrino

5
推荐指数
1
解决办法
3734
查看次数

5
推荐指数
0
解决办法
447
查看次数

在Padrino上模拟current_account进行rspec测试

我正在尝试测试一个padrino控制器,它依赖于Padrino提供的current_account :: Admin :: AccessControl

为此,我需要模拟current_account.

代码是这样的:

App.controller :post do
  post :create, map => '/create' do
    Post.create :user => current_account
  end
end
Run Code Online (Sandbox Code Playgroud)

和rspec:

describe "Post creation" do
  it 'should create' do
    account = Account.create :name => 'someone'
    loggin_as account #to mock current_account
    post '/create'
    Post.first.user.should == account
  end
end
Run Code Online (Sandbox Code Playgroud)

如何实现"loggin_as"或如何编写此测试?

ruby rspec padrino

5
推荐指数
1
解决办法
574
查看次数

在Heroku中发送Padrino的电子邮件

我正在尝试通过Padrino的sendmail发送电子邮件.我做了这里指定的配置(配置快速使用)

但是我总是在服务器日志中出现以下错误(在Heroku或localhost上):

app[web.1]: sh: Illegal option - 
app[web.1]: Errno::EPIPE - Broken pipe:
Run Code Online (Sandbox Code Playgroud)

我安装了mail gem,我正在使用Padrino 0.10.7

我正在使用这个,发送电子邮件:

post :create do
  email(:from => "tony@reyes.com", :to => "john@smith.com", :subject => "Welcome!", :body=>"Body")
end
Run Code Online (Sandbox Code Playgroud)

这几乎就是我所有的......

ruby heroku mailing padrino

5
推荐指数
1
解决办法
627
查看次数

如何访问Padrino模型中的current_account?

我正在开发一个具有主应用程序和管理员应用程序的Padrino应用程序.当用户登录会话时,我只需运行以下两行来登录.

account = Account.authenticate(params[:email], params[:password])
set_current_account(account)
Run Code Online (Sandbox Code Playgroud)

在Admin中的任何控制器中使用调试器

current_account
#<Account @id=1 @name="John" @surname="Davies" @email="john.davies@gmail.com" @crypted_password="3456789" @role="admin">
Run Code Online (Sandbox Code Playgroud)

在任何型号的调试器

current_account
*** NameError Exception: undefined local variable or method `current_account' for #<Post @id=1 @question="Why is this not working?" @answer="I have no idea">
Run Code Online (Sandbox Code Playgroud)

我能够访问current_account以找出在Admin应用程序中登录的用户,但是在主应用程序中无法访问此变量.

我想要做的是我为所有模型创建一个活动源或审计跟踪,因此当在任何模型中创建/更新/销毁记录时,会在模型活动中创建一条新记录.话虽这么说,我需要访问模型中的current_account变量.

我搜索了解决方案,并提出了一个建议:

在admin/app.rb中

enable  :sessions
set :session_id, "my-global-session"
Run Code Online (Sandbox Code Playgroud)

在app/app.rb中

register Padrino::Admin::AccessControl
register Padrino::Admin::Helpers

enable :sessions
set :session_id, "my-global-session"
Run Code Online (Sandbox Code Playgroud)

它对我不起作用.有没有办法在我的模型中访问current_account?

感谢您的任何指导或建议.

ruby database authentication padrino audit-logging

5
推荐指数
1
解决办法
692
查看次数

为什么HAML在ERB和ERUBIS时不会抛出编码ISSUE

请遵循以下代码:

__ENCODING__
# => #<Encoding:UTF-8>

Encoding.default_internal
# => #<Encoding:UTF-8> 

Encoding.default_external
# =>  #<Encoding:UTF-8> 
Run Code Online (Sandbox Code Playgroud)

案例1:HAML抛出 Encoding::UndefinedConversionError

string = "j\xC3\xBCrgen".force_encoding('ASCII-8BIT')

string.encoding
# =>  #<Encoding:ASCII-8BIT>  

Haml::Engine.new("#{string}").render
## => Encoding::UndefinedConversionError: "\xC3" from ASCII-8BIT to UTF-8

ERB.new("<%= string %>").result(binding)
# => "jürgen"
# => Resulting encoding is #<Encoding:UTF-8> 

Erubis::Eruby.new("<%= string %>").result(binding)       
# => "j\xC3\xBCrgen"
# => resulting encoding is #<Encoding:ASCII-8BIT>
Run Code Online (Sandbox Code Playgroud)

案例2:HAML不会抛出错误

string = "Ratatouille".force_encoding('ASCII-8BIT')

string.encoding
# => #<Encoding:ASCII-8BIT>

Haml::Engine.new("#{string}").render
## => "Ratatouille\n"
## => resulting encoding is #<Encoding:UTF-8>    

ERB.new("<%= string %>").result(binding)
# => "Ratatouille"
# …
Run Code Online (Sandbox Code Playgroud)

ruby haml encoding padrino

5
推荐指数
1
解决办法
578
查看次数

应用程序之间的Padrino身份验证,使用例如:logged_in?

我正在关注Padrino博客教程,现在我遇到了我有两个应用程序的问题:管理员,应用程序和我不知道如何访问来自App内部管理员的经过身份验证的帐户.例如,在views/posts/show.haml里面我希望能够使用logged_in吗?帮助器,但它总是返回false,因为我怀疑必须以其他方式访问current_account变量.我错过了什么?

# admin/app.rb
 module MyCompany
  class Admin < Padrino::Application
    use ActiveRecord::ConnectionAdapters::ConnectionManagement

    register Padrino::Mailer
    register Padrino::Helpers
    register Padrino::Admin::AccessControl

    set :admin_model, 'Account'
    set :login_page,  '/sessions/new'

    enable  :sessions
    disable :store_location

    access_control.roles_for :any do |role|
      role.protect '/'
      role.allow   '/sessions'
    end

    access_control.roles_for :admin do |role|
      role.project_module :posts, '/posts'
      role.project_module :accounts, '/accounts'
    end

    # Custom error management
    error(403) { @title = "Error 403"; render('errors/403', :layout => :error) }
    error(404) { @title = "Error 404"; render('errors/404', :layout …
Run Code Online (Sandbox Code Playgroud)

ruby authentication sinatra padrino

5
推荐指数
0
解决办法
470
查看次数

使用Nokogiri在Slate/Middleman中生成静态标题列表

我对中间人和红宝石缺乏经验,但我一直在努力让Slate工作,所以它在构建时生成一个侧面导航/标题列表而不是客户端使用javascript.我遇到的问题是让代码包含来自partials的头文件.

目录结构的一个示例:

Source
+--config.rb
+--includes
  +--file.md
  +--otherfile.md
+--index.html
+--layouts
  +--layout.erb
Run Code Online (Sandbox Code Playgroud)

布局和config.rb的要点

Config.rb代码段:

require 'nokogiri'

helpers do   
def toc_data(page_content)
    html_doc = Nokogiri::HTML::DocumentFragment.parse(page_content)

    # get a flat list of headers
    headers = []
    html_doc.css('h1, h2, h3').each do |header|
      headers.push({
        id: header.attribute('id').to_s,
        content: header.content,
        level: header.name[1].to_i,
        children: []
      })
    end

    [3,2].each do |header_level|
      header_to_nest = nil
      headers = headers.reject do |header|
        if header[:level] == header_level
          header_to_nest[:children].push header if header_to_nest
          true
        else
          header_to_nest = header if header[:level] == (header_level - 1)
          false …
Run Code Online (Sandbox Code Playgroud)

ruby nokogiri padrino middleman github-pages

5
推荐指数
1
解决办法
297
查看次数

将ORM添加到现有的padrino应用程序

我是ruby,sinatra和padrino的新手,所以这可能是一个愚蠢的问题,但是:
有没有办法将orm添加到现有的应用程序中?

我的问题是我用以下命令行创建了一个应用程序:

$ padrino-gen project sample_blog -a mysql -b
Run Code Online (Sandbox Code Playgroud)

(我认为选择了默认的ORM.)
然后尝试添加模型:

$ padrino-gen model post title:string body:text
<= You need an ORM adapter for run this generator. Sorry!
Run Code Online (Sandbox Code Playgroud)

如何在不重新编写整个应用程序的情况下添加orm?
它现在不是很重要,因为应用程序不包含任何内容,但我计划在后面添加测试,我想知道它是否容易.

感谢您的初学者提示.

ruby sinatra padrino

4
推荐指数
1
解决办法
834
查看次数