当前位置:  开发笔记 > 后端 > 正文

什么是将小型红宝石应用程序放到网上的最佳方式?

如何解决《什么是将小型红宝石应用程序放到网上的最佳方式?》经验,为你挑选了2个好方法。

我写了一个小的ruby应用程序,这是一个anagram搜索器.这是学习红宝石,但我想把它放在网上供个人使用.我对Rails有一些经验,很多人都推荐过Sinatra.我也没关系,但我找不到有关如何使用文本文件而不是数据库的任何信息.

应用程序非常简单,对单词列表的文本文件进行验证,然后查找所有字谜.我一直认为这应该很简单,但是我坚持将该文本文件导入Rails(如果我选择那样的话,那就是Sinatra).在Rails项目中,我将文本文件放在lib目录中.

不幸的是,即使Rails中的路径看起来是正确的,我也会收到错误:

no such file to load -- /Users/court/Sites/cvtest/lib/english.txt 

(cvtest是rails项目的名称)

这是代码.它本身很好用:

file_path = '/Users/court/Sites/anagram/dictionary/english.txt'

input_string = gets.chomp


# validate input to list
if File.foreach(file_path) {|x| break x if x.chomp == input_string}

  #break down the word
  word = input_string.split(//).sort 

  # match word  
  anagrams = IO.readlines(file_path).partition{
    |line| line.strip!
    (line.size == word.size && line.split(//).sort == word)
  }[0] 

  #list all words except the original
    anagrams.each{ |matched_word| puts matched_word unless matched_word == input_string } 


#display error if 
else
  puts "This word cannot be found in the dictionary"
end

Chuck.. 5

将实际功能(找到字谜)纳入方法.从您的Web应用程序调用该方法.

在Rails中,您将创建一个调用该方法而不是ActiveRecord的控制器操作.在Sinatra中,您只需创建一个调用该方法的路径.这是一个Sinatra的例子:

get '/word/:input'
  anagrams = find_anagrams(params[:input])
  anagrams.join(", ")
end

然后,当您访问http://yourapp.com/word/pool时,它将打印"loop,polo".



1> Chuck..:

将实际功能(找到字谜)纳入方法.从您的Web应用程序调用该方法.

在Rails中,您将创建一个调用该方法而不是ActiveRecord的控制器操作.在Sinatra中,您只需创建一个调用该方法的路径.这是一个Sinatra的例子:

get '/word/:input'
  anagrams = find_anagrams(params[:input])
  anagrams.join(", ")
end

然后,当您访问http://yourapp.com/word/pool时,它将打印"loop,polo".



2> Brian Campbe..:

我知道问题被标记为已回答,但我更喜欢以下内容,因为它使用查询参数而不是基于路径的参数,这意味着您可以使用常规GET表单提交传递参数:

require 'rubygems'
require 'sinatra'

def find_anagrams word
  # your anagram method here
end

get '/anagram' do
  @word = params['word']
  @anagrams = find_anagrams @word if @word
  haml :anagram
end

以下haml(您可以使用您喜欢的任何模板语言).这将为您提供一个输入表单,如果已提供单词并生成了anagram列表,则会显示字谜列表:

%h1 
  Enter a word
  %form{:action => "anagram"}
    %input{:type => "text", :name => "word"}
    %input{:type => "submit"}
- if @word
  %h1 
    Anagrams of 
    &= @word
  - if @anagrams
    %ul
      - @anagrams.each do |word|
        %li&= word
  - else
    %p No anagrams found

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有