레일 2.3 템플릿을 사용하고 있는데 내 응용 프로그램 이름을 내 템플릿의 변수로 사용할 수 있기를 원할 때 사용합니다.
rails appname -m path/to/template.rb
... template.rb 안에 appname에 액세스 할 수 있기를 원합니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?
감사합니다.레일 응용 프로그램을 생성 할 때 레일 템플릿 내부에서 응용 프로그램 이름에 액세스
답변
답변 해 주셔서 감사합니다. 마이크 우드 하우스, 너 너무 가까웠다. 당신이 당신의 레일 템플릿이 내부에서 APPNAME에 액세스하기 위해 필요한 모든 ...
@root.split('/').last
@root 변수가 템플릿을 초기화 할 때 만든 첫 번째 일이 당신의 레일 템플릿 안에 사용할 밝혀졌습니다. RAILS_ROOT가 작동하지 않습니다.
RAILS_ROOT은 (는) 루트 디렉토리의 절대 경로를 제공합니다. 앱 이름은 최종 '/'다음에 문자열의 일부가되며 원하는 방식으로 가져올 수 있습니다.
편집 : 작업을 완료하기에 충분하지 않습니다. Mike와 Dan은 그것을 아래에서 철저히 다듬습니다.
아마 더 간단한 방법이있다, 그러나이 작동하는 것 같다 :
RAILS_ROOT.split('/').last
편집 : Bleah이 -이 한 번 부결되었다, 그리고 유권자가 옳았다. 질문을 더 자세히 읽으려면 2.3 및 template.rb 요소가 있음을 눈치 챘을 것입니다. 사과.
응용 프로그램 이름이 필요한 시점에서 RAILS_ROOT가 생성되지 않았을 것으로 생각됩니다. - 나는 채소 수 몰랐
app_path = ARGV.first
이 CHDIR 및 동결을 허용하는 스크립트의 끝 부분에 사용되는이 필요한 경우 수행해야 할 : ruby\lib\ruby\gems\1.8\gems\rails-2.2.2\bin\rails
보면, 그러나, 일이 거의 첫 번째 일은 이것이다 창조 할 때부터, 그래서 적어도 새로운 것을 배웠습니다. ARGV
는 여기에 사용됩니다 : 빨리 ARGV 정말 처리하는 곳으로 우리를 얻을 수
Rails::Generator::Scripts::Generate.new.run(ARGV, :generator => 'app')
을 : 나는 아래 여기
Rails::Generator::Base.instance(options[:generator], args, options).command(options[:command]).invoke!
어딘가를 참조
rails-2.3.1\lib\rails_generator\scripts.rb
아마 어디있다 템플릿 처리가 처리됩니다. 나는 2.3의 초기 단계에 있으며 템플리트는 아직 보지 못했던 영역이라는 것을 알고 있습니다.
내 첫 노력보다 도움이 되나요?
이제 Rails.root를 호출하고 더 이상 RAILS_ROOT를 호출하지 않는 것이 좋습니다. 명백하게 행성 난간에있는 누군가는 대문자 또는 비슷한 비슷한 중요한 이유에 대한 혐오감을 가지고 있습니다. 2.3.5부터 그들은 둘 다 작동하는 것처럼 보입니다.
이 질문에 대한 답변을 찾고 계십니다. 불행히도 위의 대답 (@root)은 Rails 3에서 작동하지 않는 것 같습니다.
다음은 레일에 (더 쉽게) 3 응용 프로그램 템플릿에 액세스 할 수있는 변수는 다음과 같습니다
이@app_name
@app_path
레일 3에서 app_name
속성을 사용합니다.
Rails::Generators::AppGenerator에 대한 설명서를 참조하십시오.
class DynanavGenerator < Rails::Generators::Base
(수
나는 레일 2.3 발전기, 토르 0.18.0, 루비 1.9.2p290
`template': undefined local variable or method `app_name'
오류
윈도우
를 3.2.11 레일지고 있지만되었다 이 오류가 레일 3.0.9 이하에서 발생했는지 확인하십시오) 클래스 정의를 다음과 같이 변경했습니다. 다음 준 공class DynanavGenerator < Rails::Generators::NamedBase
:
그때 (이하 "뭔가")는 '이름'을 추가
필수 인수 '이름'을 위해 제공 값 없음 :
rails generate dynanav something --force
을
원래 오류가 발생 했으므로 다음을 추가했습니다.
def app_name
@name.titleize
end
클래스에
그리고 모두 잘되었습니다. 사용할 수있는 다른 유용한 변수는 템플릿 내에서있다
rails plugin new engines/dummy -m my_template.rb
을 실행하는 동안 나는 비슷한 문제로 실행
는 위에 나열된 변수 중 어느 것도 @name
을 사용할 것을 내가 찾은 레일 4에 나에게 사용할 수 없었다 . pry
을 이용하면 스스로 볼 수 있고 놀 수 있습니다. 내 템플릿 내부 내가
require 'pry'; binding.pry
을 추가하고
ls -i
instance variables:
@_initializer @app_path @behavior @destination_stack @extra_entries @name @output_buffer @shell
@_invocations @args @builder @dummy_path @gem_filter @options @rails_template @source_paths
@after_bundle_callbacks @author @camelized @email @in_group @original_name @shebang
- 1. 배포 레일 응용 프로그램
- 2. 레일 응용 프로그램 용 Rdoc 생성
- 3. 레일 응용 프로그램 +
- 4. 레일 응용 프로그램 배포
- 5. 간헐적으로 느린 레일 응용 프로그램
- 6. 레일 응용 프로그램을 시작하고 혼동했습니다.
- 7. 레일 응용 프로그램 구조 도움말
- 8. Vbulletin과 레일 사이에 단일 사인온 응용 프로그램
- 9. 레일 응용 프로그램 템플릿 코드를 실행하고 thowing 맞는
- 10. 응용 프로그램 데이터없이 레일 뷰를 렌더링하는 방법
- 11. 이전에 레일에 새로운 레일 응용 프로그램 3
- 12. 단일 도메인에 여러 레일 응용 프로그램 배포
- 13. 국제화 모범 사례/레일 응용 프로그램
- 14. 레일 응용 프로그램을 시작할 수 없습니다.
- 15. NGINX 설치 (서브 디렉토리의 레일 응용 프로그램)
- 16. 다른 응용 프로그램 용 레일 서버 시작
- 17. Tomcat에서 Jruby 레일 응용 프로그램. Warbler를 통해 생성 된 전쟁
- 18. 레일 3 응용 프로그램을 내보낼 수있는 달력
- 19. 레일 응용 프로그램 + 여러 데이터베이스 인스턴스가
- 20. 레일 응용 프로그램 생성을위한 자동화 된 스크립트
- 21. 레일 응용 프로그램을 시작할 수 없습니다.
- 22. Windows에서 Mac이나 Linux로 레일 응용 프로그램을 포팅
- 23. 레일 응용 프로그램 성능 향상 의심
- 24. Heroku : 레일 응용 프로그램 문제 배포
- 25. 레일 3 응용 프로그램 배포, Bundler를 & 레이크는
- 26. 레일 WebService에와 C++ 노출하는 응용 프로그램
- 27. 레일 응용 프로그램은
- 28. iphone에서 응용 프로그램 내부에서 현지화
- 29. 레일 웹 응용 프로그램, quickbooks 및 mysql
- 30. 레일 응용 프로그램 용 서식있는 텍스트 편집기
이 답변 시간을 증명 가능한 인스턴스 변수의 목록을 보여
ls
를 실행, 상단 하나 여야합니다 –